【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)将渲染完毕的页面响应给用户

相关推荐
小王和八蛋7 分钟前
DecimalFormat 与 BigDecimal
java·后端
beata21 分钟前
Java基础-16:Java内置锁的四种状态及其转换机制详解-从无锁到重量级锁的进化与优化指南
java·后端
IT探险家23 分钟前
你的第一个 Java 程序就翻车?HelloWorld 的 8 个隐藏陷阱
java
随风飘的云25 分钟前
SpringBoot 的自动配置原理
java
SimonKing30 分钟前
觅得又一款轻量级数据库管理工具:GoNavi
java·后端·程序员
Seven972 小时前
BIO详解:解锁阻塞IO的使用方式
java
oak隔壁找我12 小时前
JVM常用调优参数
java·后端
蝎子莱莱爱打怪16 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
狼爷17 小时前
Go 没有 override?别硬套继承!用接口+嵌入,写更清爽的“覆盖”逻辑
java·go
小兔崽子去哪了20 小时前
Java 自动化部署
java·后端