SpringMVC请求流程

 SpringMVC请求流程

        SpringMVC请求处理流程分析

                SpringMVC请求流程_第1张图片

        

        Handler会做数据准备或数据模型或业务逻辑等等。

        SpringMVC框架也是一个基于请求驱动的Web框架,并且使用了前端控制器模式(是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理来进行设计,再根据请求映射规则分发给相应的页面控制器(动作/处理器)进行处理。首先让我们整体看一下SpringMVC处理请求的流程:

        1、首先用户发送请求,请求被SpringMVC前端控制器(DispatherServlet)捕获;

        2、前端控制器(DispatherServlet)对请求URL解析获取请求URI,根据URI,调用HandlerMapping;

        3、前端控制器(DispatherServlet)获得返回的HandlerExecutionChain,(包括Handler对象以及Handler对象应用的拦截器);

        4、DispatherServlet根据获得的HandlerExecutionChain,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法);

        5、HandlerAdapter根据请求的Handler适配并执行对应的Handler;HandlerAdapter(提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。在填充Handler的入参过程中,根据配置,Spring将做一些额外的工作:

        HttpMessageConveter:将请求消息(如Json、xml等数据)转换成一个对象,将对象转换成为指定的响应信息。

        数据转换:对请求信息进行数据转换。如String转换成Integer、Double等数据格式化;

        数据格式化:如将字符串转换成格式化数字或格式化日期等;

        数据验证:验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中)

        6、Handler执行完毕,返回一个ModelAndView(即模型和视图)给HandlerAdaptor;

        7、HandlerAdaptor适配器将执行结果ModelAndView返回给前端控制器;

        8、前端控制器接收到ModelAndView后,请求对应的视图解析器;

        9、视图解析器解析ModelAndView后返回对应View;

       10、渲染视图并返回渲染后的视图给前端控制器;

       11、最终前端控制器将渲染后的页面响应给用户或客户端。

 

你可能感兴趣的:(SpringMVC,springmvc)