Spring MVC执行流程

SpringMVC是隶属于Spring Web中的一部分, 属于表现层的框架.

其使用了MVC架构模式的思想, 将Web层进行职责解耦, 使用请求-响应模型简化Web开发

SpringMVC通过中央调度器DispatcherServlet,来调用MVC的三大件:Controller、Model、View。

保证MVC的每一个组件只与DispatcherServlet耦合, 彼此之间独立运行, 降低程序的耦合性。

具体执行逻辑如下: 

  1. 浏览器提交请求到中央调度器.
  2. 中央调度器将请求转给处理器映射器.
  3. 处理器映射器根据请求, 找到请求对应的处理器, 并将其封装为处理器执行链返回给中央调度器.
  4. 中央调度器根据处理器执行链中的处理器, 找到能够执行该处理器的适配器.
  5. 适配器调用执行处理器.
  6. 处理器将处理结果以及要跳转的视图封装到一个对象ModelAndView中, 并将其返回给处理器适配器.
  7. 适配器将结果返回给中央调度器.
  8. 中央调度器调用视图解析器, 将ModelAndView中的视图名封装为视图对象.
  9. 视图解析器将封装了的视图对象返回给中央处理器.
  10. 中央调度器调用视图对象, 让其渲染, 即进行数据填充, 形成响应对象.
  11. 中央调度器响应浏览器.

DispatcherServlet

中央调度器, 它用来调用诸如处理器映射器, 适配器, 视图解析器等组件处理用户请求.

中央调度器的存在降低了组件之间的耦合.

HandlerMapping

处理器映射器, 负责根据用户请求找到对应的Handler, 即处理器, 并将处理器封装为处理器执行链返回给中央调度器.

HandleAdaptor

适配器模式, 可以扩展适配器来对更多类型的处理器进行执行, 中央调度器根据不同的处理器自动选择适配器, 以执行处理器.

Handler

处理器, 即后端控制器. 在DispatcherServlet控制下Handler调用Service层对具体用户请求进行处理.

Handler一般涉及的是用户具体的业务请求, 充当MVC中的Controller.

ViewResolver

视图解析器, 负责将处理结果生成View视图, ViewResolver首先将逻辑视图名解析为物理视图名, 即具体页面地址.

再生成View视图对象, 最后将处理结果通过页面形式展现给用户.

SpringMVC中提供了多种View视图类型, 例如: JstlView, RedirectView等等.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蓝天

StarUML 5.0问题解决:Failed to open the model file. Invalid file format.

使用StarUML 5.0打开一个已有的文件时,如果遇到报“Failed to open the model file. Invalid file format...

931
来自专栏测试开发架构之路

Spring Boot 入门实践

1795
来自专栏java闲聊

多个Mysql安装

1915
来自专栏Rgc

ubuntu环境部署项目

 安装 nginx:  https://www.cnblogs.com/EasonJim/p/7806879.html

2702
来自专栏老安的博客

openstack 集成vmware 填坑经验

1112
来自专栏aCloudDeveloper

UNIX环境高级编程笔记之线程

  本章涉及到线程的一些基本知识点,讨论了现有的创建线程和销毁线程的POSIX.1原语,此外,重点介绍了线程同步问题,讨论了三种基本的同步机制:互斥量、读写锁、...

2596
来自专栏抠抠空间

浅谈virtualenv(虚拟环境)

1813
来自专栏搜云库

Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh

上一篇文章讲了SpringCloudConfig 集成Git仓库,配和 Eureka 注册中心一起使用,但是我们会发现,修改了Git仓库的配置后,需要重启服务,...

22510
来自专栏惨绿少年

默认权限umask、文件系统权限、特殊权限

第1章 权限相关错误 1.1 普通用户 ls /root/ /root  属于root 普通用户没有任何权限,所以无法查看 [oldboy@znix ~]$ l...

4490
来自专栏桥路_大数据

React Natived打包报错java.io.IOException: Could not delete path '...\android\support\v7'解决

4279

扫码关注云+社区

领取腾讯云代金券