大家好,又见面了,我是你们的朋友全栈君。
SpringMVC 执行流程
SpringMVC 执行流程整体如下:
执行流程分析
(1)浏览器提交请求到中央调度器。
(2)中央调度器直接将请求转给处理器映射器。
(3)处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行链后返回给中央调度器。
(4)中央调度器根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器。
(5)处理器适配器调用执行处理器。
(6)处理器将处理结果及要跳转的视图封装到一个对象 ModelAndView 中,并将其返回给处理器适配器。
(7)处理器适配器直接将结果返回给中央调度器。
(8)中央调度器调用视图解析器,将 ModelAndView 中的视图名称封装为视图对象。
(9)视图解析器将封装了的视图对象返回给中央调度器。
(10)中央调度器调用视图对象,让其自己进行渲染,即进行数据填充,形成响应对象。
(11)中央调度器响应浏览器。
执行流程中的 API 简要说明
1. DispatcherServlet
中央调度器,也称为前端控制器,在 MVC 架构模式中充当控制器 C, DispatcherServlet 是整个流程的控制中心,由它调用诸如处理器映射器、处理器适配器、视图解析器等其它组件处理用户请求。 中央调度器的存在降低了组件之间的耦合度。
2. HandlerMapping
处理器映射器, 负责根据用户请求找到相应的将要执行的 Handler,即处理器。 即用于完成将用户请求映射为要处理该请求的处理器,并将处理器封装为处理器执行链传给中央调度器。
3. HandlAdapter
处理器适配器, 通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。 中央调度器会根据不同的处理器自动为处理器选择适配器,以执行处理器。
4. Handler
处理器,也称为后端控制器,在 DispatcherServlet 的控制下 Handler 调用 Service 层对具体的用户请求进行处理。由于 Handler 涉及到具体的用户业务请求,所以一般情况下需要程序员根据业务需求自己开发 Handler。
5. ViewResolver
视图解析器, 负责将处理结果生成 View 视图, ViewResolver 首先将逻辑视图名解析为物理视图名,即具体的页面地址,再生成 View 视图对象。最后将处理结果通过页面形式展示给用户。
SpringMVC 框架提供了很多的 View 视图类型,包括: JstlView、 RedirectView 等。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。
DispatcherServlet 默认配置
组件名称 | 默认值 |
---|---|
处理器映射器 | BeanNameUrlHandlerMappering DefaultAnnotationHandlerMapping |
处理器适配器 | HttpRequestHandlerAdaper SimpleControllerHandlerAdaper AnnotationMethodHandlerAdaper |
视图解析器 | InternalResourceViewResolver |
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154112.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...