SpringMVC——请求流程详解
SpringMVC框架是一个基于请求驱动的Web框架,并且使用了‘前端控制器’模型来进行设计,再根据‘请求映射规则’分发给相应的页面控制器进行处理。
整体流程:
- 具体步骤:
- 首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;
- 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名);图中的 3、4、5 步骤;
- 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图中的步骤 6、7;
- 前端控制器再次收回控制权,将响应返回给用户,图中的步骤 8;至此整个结束。
核心流程:
- 具体步骤:
- 用户发送请求至 前端控制器DispatcherServlet。
- 前端控制器DispatcherServlet 收到请求调用 处理器映射器HandlerMapping。
- 处理器映射器HandlerMapping 找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 前端控制器DispatcherServlet。
- 前端控制器DispatcherServlet 调用 处理器适配器HandlerAdapter。
- 处理器适配器HandlerAdapter 经过适配调用具体的 处理器(Controller,也叫后端控制器)。
- Controller 执行完成返回 模型数据与逻辑视图ModelAndView。
- 处理器适配器HandlerAdapter 将 Controller 执行结果 ModelAndView 返回给 前端控制器DispatcherServlet。
- 前端控制器DispatcherServlet 将 ModelAndView 传给 视图解析器ViewReslover,解析 ModelAndView 得到正正的物理视图 View。
- 视图解析器ViewReslover 向 前端控制器DispatcherServlet 返回 View。
- 前端控制器DispatcherServlet 根据 View 进行视图渲染(把数据放到 jsp 页面上),并返回页面结果给 前端控制器DispatcherServlet。
- 最后 前端控制器DispatcherServlet 向用户响应结果。