SpringMVC流程解析

重要domain说明

  • DispatcherServlet 前端控制器,用于接收全部前段请求和分发请求,处理SpringMVC流程
  • HandlerMapping 处理器映射器,从容器中获取所有的HandlerMapping并进行遍历,找到请求对应的Handler
  • HandlerAdapter 处理器适配器,将参数传递给Handler进行处理
  • Handler 处理器,我们平时常提到的Controller就是处理器,实际业务逻辑的地方
  • ViewReslover 视图解析器,将ModelAndView转换为View
  • HandlerExecutionChain 处理器处理链,包含一个处理器HandlerMethod和多个拦截器HandlerInterceptor
  • HandlerIntercepter 处理器拦截器,可以在SpringMVC的某个流程中(请求处理前、请求处理后、渲染视图后等)来实现拦截器功能
  • ModelAndView 模型数据,包含着SpringMVC里Model和View对象
  • view 视图,视图解析器解析ModelAndView得出,前端控制器进行渲染

    请求流程

  1. 用户发起请求(client客户端DispatcherServlet前端控制器)
  2. 查找处理器(DispatcherServlet前端控制器HandlerMapping处理器映射器交互)
    1. 找到处理器映射器查找处理器(DispatcherServlet前端控制器HandlerMapping处理器映射器
    2. 返回HandlerExecutionChain处理器处理链(包括HandlerIntercepter处理器拦截器Handler处理器)(HandlerMapping处理器映射器→DispatcherServlet前端控制器)
  3. 调用处理器(DispatcherServlet前端控制器HandlerAdapter处理器适配器交互)
    1. 通过处理器适配器调用具体的处理器(DispatcherServlet前端控制器HandlerAdapter处理器适配器
      1. 调用处理器Handler(HandlerAdapter处理器适配器Handler处理器
      2. 返回ModelAndView模型数据(Handler处理器HandlerAdapter处理器适配器
    2. 返回ModelAndView模型数据(HandlerAdapter处理器适配器DispatcherServlet前端控制器
  4. 进行视图解析(DispatcherServlet前端控制器ViewReslover视图解析器交互)
    1. 进行视图解析(DispatcherServlet前端控制器ViewReslover视图解析器
    2. 返回view视图(ViewReslover视图解析器DispatcherServlet前端控制器
  5. 渲染视图(DispatcherServlet前端控制器
  6. 返回响应(DispatcherServlet前端控制器client客户端)

    SpringMVC的九大组件

  7. initMultipartResolver();//处理用户请求,把request封装为MultipartHttpServletRequest
  8. initLocalResolver();//处理国际化以及ViewReslover解析视图
  9. initThemeResolver();//处理解析主题
  10. initHandlerMapping();//处理查找Handler
  11. initHandlerAdapters;//处理参数,将Request和Response处理为Handler可接受的参数
  12. initHandlerExceptionResolver();//处理其他组件的异常
  13. initRequestToViewNameTranslator();//处理没有设置view和viewName的请求,从request中获取viewName
  14. initViewResolver();//用来处理视图解析
  15. initFlashMapManager();//用来处理redirect重定向时传递参数的FlashMap