【SpringMVC】一文带你彻底搞懂SpringMVC的工作流程(最强详解!!)

目录

首先来说明一下,SpringMVC的各个组成部分

DispatcherServlet

HandlerMapping

Handler(通常就是Controller)

HandlerAdapter

ViewResolver

View

SpringMVC具体的工作流程


首先来说明一下,SpringMVC的各个组成部分

DispatcherServlet

是SpringMVC的核心部分,是一种前端控制器,由框架所提供

作用:统一处理请求和响应。除此之外也是整个控制流程的中心,由DispatcherServlet来调用其他组件,对用户的请求进行处理

HandlerMapping

处理器映射器,由框架所提供。

作用:根据请求的url、method等信息来查找具体的Handler(通俗讲------通常来说就是Controller

Handler(通常就是Controller)

处理器,注意------这个就是软件开发人员自己开发设计的部分

作用:在DispatcherServlet的控制下,Handler对用户的请求进行处理

HandlerAdapter

处理器适配器,由框架所提供

作用:根据HandlerMapping所提供的Handler信息,会按照特定的规则去执行相关的处理器Handler
小结

  • Handler------是用来干活的工具
  • HandlerMapping------是根据需要干的活找到对应的工具
  • HandlerAdapter------是具体用工具干活的那个人

ViewResolver

视图解析器------由框架提供

作用:ViewResolver负责将处理结果生成View视图。ViewResolver首先会根据逻辑视图名解析成物理图名,即具体的页面地址,再生成View视图对象,最后将View进行渲染之后将页面呈现给用户

View

视图------软件开发人员自己设计

作用:View接口的职责就是接收model对象、Request对象、Response对象,最后渲染输出结果返回给Response对象

SpringMVC具体的工作流程

以上就是SpringMVC的流程图

用文字描述就是以下:

1、用户将请求发送,由前端控制器DispatcherServlet来拦截并接收请求

2、前端控制器DispatcherServlet收到请求之后调用处理器映射器(HanlderMapping),区查找与请求对应的Handler

3、处理器映射器(HanlderMapping)找到具体的处理器(根据xml配置、注解等方式进行查找),返回一个处理器执行链(是一个包含处理器对象和拦截器(Interceptor)的对象【如果有拦截器的话】)

4、然后前端控制器DispatcherServlet调用了处理器适配器HandlerAdapter

5、处理器适配器会找到具体Handler的具体方法,并将获取到的参数执行完成之后将结果继续返回给DispatcherServlet(结果通常是ModelAndView)

6、然后前端控制器(DispatcherServlet)会调用视图解析器,并将ModelAndView传给它(ViewResolver)

7、视图解析器(ViewResolver)将获得的参数从逻辑视图转换为物理视图对象(View)返回给前端控制器(DispatcherServlet)

8、前端控制器(DispatcherServlet)调用物理视图进行渲染并返回。

9、前端控制器(DispatcherServlet)将渲染完毕的页面响应给用户

相关推荐
Arthas21713 小时前
互联网大厂Java面试实录:谢飞机的电商微服务之旅 - Spring Boot/Cloud/Redis/Kafka实战
spring boot·redis·spring cloud·微服务·kafka·java面试·电商
左左右右左右摇晃14 小时前
Java笔记——JMM
java·后端·spring
Schengshuo14 小时前
Spring学习——新建module模块
java·学习·spring
super_lzb14 小时前
resources路径下的文件无法打入war包或jar包内
spring·springboot·springboot打包·war包·sources资源文件
Memory_荒年14 小时前
Nacos双面超人:注册中心 + 配置中心,一个都不能少!
java·后端·架构
柒.梧.14 小时前
深入浅出理解原子操作:从单核到多核的实现原理
java
Moe48815 小时前
Redis 缓存三大经典问题:穿透、击穿与雪崩
java·后端·面试
赫瑞15 小时前
Java中的最长公共子序列——LCS
java·开发语言
于先生吖15 小时前
零基础开发国际版同城出行平台 JAVA 顺风车预约系统实战教学
java·开发语言
代码雕刻家15 小时前
2.22.StringBuffer类的常见用法、
java·开发语言