SpringMVC请求处理流程及核心组件解析

本文最后更新于:1 年前

① 前端发送请求被前端控制器DispatcherServlet拦截;

② 前端控制器调用处理器映射器HandlerMapping对请求URL进行解析,解析之后返回调用给前端控制器;

③ 前端控制器调用处理器适配器处理调用链;

④ 处理器适配器基于反射通过适配器设计模式完成处理器(控制器)的调用处理用户请求;

⑤ 处理器适配器将控制器返回的视图和数据信息封装成ModelAndView响应给前端控制器;

⑥ 前端控制器调用视图解析器ViewResolver对ModelAndView进行解析,将解析结果(视图资源和数据)响应给前端控制器;

⑦ 前端控制器调用视图view组件将数据进行渲染,将渲染结果(静态视图)响应给前端控制器;

⑧ 前端控制器响应用户请求。

请求处理流程

SpringMVC是通过前端控制器(DispatcherServlet)拦截并处理用户请求的。

① 前端发送请求被前端控制器DispatcherServlet拦截;

② 前端控制器调用处理器映射器HandlerMapping对请求URL进行解析,解析之后返回调用给前端控制器;

③ 前端控制器调用处理器适配器处理调用链;

④ 处理器适配器基于反射通过适配器设计模式完成处理器(控制器)的调用处理用户请求;

⑤ 处理器适配器将控制器返回的视图和数据信息封装成ModelAndView响应给前端控制器;

⑥ 前端控制器调用视图解析器ViewResolver对ModelAndView进行解析,将解析结果(视图资源和数据)响应给前端控制器;

⑦ 前端控制器调用视图view组件将数据进行渲染,将渲染结果(静态视图)响应给前端控制器;

⑧ 前端控制器响应用户请求。

  1. 用户发送请求至前端控制器DispatcherServlet;
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器;
  3. 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器 (如果有则生成) 一并返回给DispatcherServlet;
  4. DispatcherServlet调用HandlerAdapter处理器适配器;
  5. HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器);
  6. Controller执行完成返回ModelAndView;
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet;
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器;
  9. ViewReslover解析后返回具体View;
  10. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。

SpringMVC的核心组件

  • DispatcherServlet 前端控制器、总控制器

    • 作用:接收请求,协同各组件工作、响应请求
  • HandlerMapping 处理器映射

    • 作用:负责根据用户请求的URL找到对应的Handler
    • 可配置SpringMVC提供多个处理器映射的实现,可以根据需要进行配置
  • HandlerAdapter 处理器适配器

    • 作用:按照处理器映射器解析的用户请求的调用链,通过适配器模式完成Handler的调用
  • Handler 处理器/控制器

    • 由工程师根据业务的需求进行开发
    • 作用:处理请求
  • ModelAndView 视图模型

    • 作用:用于封装处理器返回的数据以及相应的视图
    • ModelAndView = Model + View
  • ViewResolver 视图解析器

    • 作用:对ModelAndView进行解析
    • 可配置 SpringMVC提供多个视图解析器的实现,可以根据需要进行配置
  • View 视图

    • 作用:完成数据渲染

  • 前端控制器:DispatcherServlet

    用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。

  • 处理器映射器:HandlerMapping

    HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

  • 处理器适配器:HandlerAdapter

    通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理
    器进行执行。

  • 处理器:Handler

    它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由 Handler 对具体的用户请求进行处理。

  • 视图解析器:View Resolver

    View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即
    具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

  • 视图:View

    SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView 等。最常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!