SpringMVC的工作原理(执行流程)

流程如下:

1.用户点击某个请求路径,发起一个HTTP request请求,该请求会被提交到DispatcherServlet(前端控制器);
2.由DispatchServlet请求一个或者多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)
3.DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器)
4.HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为 Controller);
5.Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息);
6.HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet ;
7.DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
8.ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet;
9.DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);
10.视图负责将结果显示到浏览器(客户端)。
 

流程(重要)如下:

1.客户端(浏览器)发送请求,直接请求到 DispatcherServlet 。
2.DispatcherServlet 根据请求信息调⽤ HandlerMapping ,解析请求对应的 Handler 。
3.解析到对应的 Handler (也就是我们平常说的 Controller 控制器)后,开始由HandlerAdapter 适配器处理。
4.HandlerAdapter 会根据 Handler 来调⽤真正的处理器开处理请求,并处理相应的业务逻辑。
5.处理器处理完业务后,会返回⼀个 ModelAndView 对象, Model 是返回的数据对象, View是个逻辑上的 View 。
6.ViewResolver 会根据逻辑 View 查找实际的 View 。
7.DispaterServlet 把返回的 Model 传给 View (视图渲染)。
8.把 View 返回给请求者(浏览器)

原文地址:https://www.cnblogs.com/alwayszzj/p/15624099.html