Spring MVC工作原理

Spring MVC流程

1、用户发送请求至前端控制器 DispatcherServlet

2、DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器

3、HandlerMapping 处理器映射器找到具体的处理器(Controller)(xml配置、注解查找),生成处理器对象及处理器拦截器(如果有)一并返回给DispatcherServlet。

4、DispatcherServlet 调用 HandlerAdapter 处理适配器。

5、HandlerAdapter 经过适配调用具体的处理器(controller)。

6、Controller 执行完成返回 ModelAndView。

7、HadnlerAdapter 将 Controller 的执行结果 ModelAndView 返回给DispatcherServlet。

8、DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。

9、ViewReslover 解析后返回具体View。

10、DispatcherServlet 根据View 进行渲染视图(将模型数据填充到视图中)

11、DispatcherServlet响应用户。

组件说明:

DispatcherServlet:作为前端控制器,整个流程控制的中心,控制、调度其他组件。并最终将响应结果返回给用户。

HandlerMapping:负责找到控制器。

HandlerAdapter:负责找到要具体的控制器函数。(饭后一个ModelAndView对象,包含模型数据、逻辑视图名)。

ViewResolver:把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术。

View:View会根据传进来的Model模型数据进行渲染。此处的Model实际上是一个Map数据结构,因此很容易支持其他视图技术。

即:

第一步:用户发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找

第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)

第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

第五步:处理器适配器去执行Handler

第六步:Handler执行完给处理器适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析

第九步:视图解析器像前端控制器返回View

第十步:前端控制器对视图进行渲染

第十一步:前端控制器向用户响应结果

原文地址:https://www.cnblogs.com/natian-ws/p/10826871.html