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
第十步:前端控制器对视图进行渲染
第十一步:前端控制器向用户响应结果