详解SpringMVC执行流程[通俗易懂]

详解SpringMVC执行流程[通俗易懂]SpringMVC执行流程SpringMVC执行流程整体如下:执行流程分析(1)浏览器提交请求到中央调度器。(2)中央调度器直接将请求转给处理器映射器。(3)处理器映射器会根据请求,找到处理该请求的处理器,并将其封装为处理器执行链后返回给中央调度器。(4)中央调度器根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器。(5)处理器适配器调用执行处理器。(6)处理器将处理结果及要跳转的视图封装到一个对象ModelAndView中,并将其返回给处理器适配器。(7)处理器适配

大家好,又见面了,我是你们的朋友全栈君。

SpringMVC 执行流程

SpringMVC 执行流程整体如下:
{% asset_img mvc02.jpg %}

执行流程分析

(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账号...

(0)
blank

相关推荐

  • 百度PCS快速获取access_token的方法

    百度PCS快速获取access_token的方法

  • java女人_Java是一个事业成功的女人

    java女人_Java是一个事业成功的女人原标题:Java是一个事业成功的女人文/北京达内教育(微信号:bjtedu01)关注后免费可获得达内5天训练营,都是干货哦~Java是一个事业成功的女人。很多在她手下干过的人都感觉她的能力跟她的地位并不般配,她更多的是通过技巧打动了中层管理人员。你也许会认为她是很有智慧的人,你愿意跟随她。但你要准备好在数年里不断的听到“你用错了接口,你遗漏了一个分号”这样的责备。C++是Java的表姐。她在…

  • ucosii操作系统详解_curdate函数

    ucosii操作系统详解_curdate函数UCOSII的用法OSTaskCreate()函数原型:INT8UOSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8Uprio)调用者:任务或者是初始化代码。作用:建立一个新任务,任务的建立可以在多个任务环境启动之前,也可以在正在运行的任务中建立,中断处理程序中不能建立任务,一个任务必须为无限循环结构,且不能有…

  • 我国无线2.4g及5g信道-个人笔记

    我国无线2.4g及5g信道-个人笔记中国无线信道规划2.4G频段(2.412GHZ-2.472GHZ)信道中心频率频率范围01   2412  2401-242302   2417  2406-242803   2422  2411-243304   2427  2416-243805   2432  2421-244306   2437  2426-244807   2442  2431-245308   2447  2426-244809   2452  2441-246310   2457  24

  • 替换字符串指定位置字符 php,php如何从指定位置替换字符串

    替换字符串指定位置字符 php,php如何从指定位置替换字符串在php中可以使用“substr_replace”函数实现从指定位置替换字符串,其语法是“substr_replace(string,replacement,start,length)”,参数start表示从指定位置开始替换。推荐:《PHP视频教程》php从指定位置开始替换字符方法定义和用法substr_replace()函数把字符串的一部分替换为另一个字符串。语法substr_replace(…

  • Linux7/Centos7磁盘分区、格式化及LVM管理

    Linux7/Centos7磁盘分区、格式化及LVM管理RHEL7如何对磁盘进行分区和格式化以及如何配置LVM,与以前版本的RHEL区别不大,可以通过disk工具(在图形桌面中运行)或命令工具(如:fdisk、gdisk、parted)管理硬盘设备。fdisk可以配置MBR格式;gdisk配置gpt格式,parted可以自己选择。传统的硬盘分区都是MBR格式,MBR分区位于0扇区,他一共512字节,前446字节是grub引导程序,这个会在后面学习;…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号