跳至主要內容

Spring MVC执行流程.md

向往大约 2 分钟源码分析

执行流程

Spring MVC中的MVC即模型-视图-控制器,该框架围绕一个DispatcherServlet设计,DispatcherServlet会把请求分发给各个处理器,并支持可配置的处理器映射和视图渲染等功能,过程如下图所示:

image-20230131221343878

  1. 客户端发起HTTP请求:客户端将请求提交到DispatcherServlet。
  2. 寻找处理器:由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理该请求的Controller。
  3. 调用处理器:DispatcherServlet将请求提交到Controller。
  4. 调用业务处理逻辑并返回结果:Controller调用业务处理逻辑后,返回ModelAndView。
  5. 处理视图映射并返回模型:DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
  6. HTTP响应:视图负责将结果在客户端浏览器上渲染和展示。

源码分析

组件介绍

  • DispatcherServlet: DispatcherServlet 会通过一组已注册的处理器映射找到一个处理器(Handler),然后从一组已注册的处理器适配器中找到一个支持该处理器的处理器适配器,通过它把控制流转发给这个处理器。这个处理器在结束业务逻辑的调用后,会把模型数据和逻辑视图回传给DispatcherServlet。最后,DispatcherServlet会通过视图解析器(ViewResolver)得到真正的视图,把控制权交给视图,同时传入模型数据。视图会按照一定的视图层定义,将这些数据展现到用户的响应里。
  • 处理器映射(HandlerMapping):用于将一个请求(Request)映射到一个处理器
  • 处理器适配器(HandlerAdaptor):用于转接一个控制流到一个指定类型的处理器。
  • 视图解析器:用于映射一个逻辑视图名称到一个真正的视图。