SpringMVC——请求流程详解

  • SpringMVC框架是一个基于请求驱动的Web框架,并且使用了‘前端控制器’模型来进行设计,再根据‘请求映射规则’分发给相应的页面控制器进行处理。

  • 整体流程:

    • SpringMVC——请求流程详解
    • 具体步骤:
  1. 首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;
  2. 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名);图中的 3、4、5 步骤;
  3. 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图中的步骤 6、7;
  4. 前端控制器再次收回控制权,将响应返回给用户,图中的步骤 8;至此整个结束。
  • 核心流程:

    • SpringMVC——请求流程详解
    • 具体步骤: ​​​​​​
  1. 用户发送请求至 前端控制器DispatcherServlet。
  2. 前端控制器DispatcherServlet 收到请求调用 处理器映射器HandlerMapping。​​​​​​​
  3. 处理器映射器HandlerMapping 找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 前端控制器DispatcherServlet
  4. 前端控制器DispatcherServlet 调用 处理器适配器HandlerAdapter
  5. 处理器适配器HandlerAdapter 经过适配调用具体的 处理器(Controller,也叫后端控制器)
  6. Controller 执行完成返回 模型数据与逻辑视图ModelAndView
  7. 处理器适配器HandlerAdapterController 执行结果 ModelAndView 返回给 前端控制器DispatcherServlet
  8. 前端控制器DispatcherServletModelAndView 传给 视图解析器ViewReslover,解析 ModelAndView 得到正正的物理视图 View
  9. 视图解析器ViewReslover前端控制器DispatcherServlet 返回 View
  10. 前端控制器DispatcherServlet 根据 View 进行视图渲染(把数据放到 jsp 页面上),并返回页面结果给 前端控制器DispatcherServlet
  11. 最后 前端控制器DispatcherServlet 向用户响应结果。