Spring MVC请求处理流程

SpringMVC 请求处理流程

详细分析Spring MVC请求处理的流程步骤:

(1)首先用户发送请求到前端控制器(DispatcherServlet),前端控制器根据请求信息(比如:URL)来决定选择哪个页面控制器(Controller)来进行处理,并把请求委托给它,即:Serlvet控制器的控制逻辑部分

(2)页面控制器接收到请求后,进行业务处理,处理完毕后返回一个ModelAndView(模型数据和逻辑视图名)

(3)前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的真正视图,并把模型数据传入以便视图渲染展示

(4)前端控制器再次收回控制权,将结果响应返回给用户,至此整个流程结束

Spring MVC体系结构

Spring MVC体系结构

结合请求处理流程简述框架结构:

(1)客户端发出HTTP请求,Web应用服务器接收此请求,若匹配DispatcherServlet的请求映射路径(在web.xml中指定),Web容器将该请求转交给DispatcherServlet处理。

(2)DispatcherServlet接收到该请求后,将根据请求的信息(包括:URL、请求参数、HTTP方法等)及HandlerMapping的配置(在<servletName>-servlet.xml中配置)找到处理请求的处理器(Handler)。

(3)当DispatcherServlet根据HandlerMapping找到对应当前请求的Handler之后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。

(4)在请求信息到达真正调用Handler的处理方法之前的这段时间内,Spring MVC还完成了很多工作,它会将请求信息以一定的方式转换并绑定到请求方法的入参中,对于入参的对象会进行数据转换、数据格式化以及数据校验等。这些都做完之后,最后才真正的调用Handler的处理方法进行相应的业务逻辑处理。

(5)处理器完成业务逻辑处理之后将返回一个ModelAndView对象给DispatcherServlet,ModelAndView对象包含了逻辑视图名和模型数据信息。

(6)ModelAndView对象中包含的是“逻辑视图名”,而非真正的视图对象,DispatcherServlet会通过ViewResolver将逻辑视图名解析为真正的视图对象View。当然对于负责数据展示的视图可以为:JSP、xml、PDF、JSON等多种数据格式,对此Spring MVC均可灵活配置。

(7)当得到真实的视图对象View后,DispatcherServlet会使用ModelAndView对象中的模型数据对View进行视图渲染。

(8)最终客户端获得响应消息,根据配置,可以是普通的HTML页面,也可以是一个XML或者JSON格式的数据等等。

推荐阅读更多精彩内容