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

相关推荐
budingxiaomoli4 小时前
Spring统一功能处理
java·后端·spring
Flynn Liang6 小时前
可观测性与成本治理:一次对话的 17 个观测点
java·langchain·可观测性·micrometer·langchain4j·token 成本·llm 监控
金銀銅鐵6 小时前
带您看懂字节码指令(三):同一行加法,为什么有四种指令
java·jvm
文丑颜不良啊10 小时前
LeetCode2821~2840题目解析
java·leetcode
apcipot_rain10 小时前
C++转Java日记(10)
java·开发语言
简 洁 冬冬11 小时前
泛型方法写法全面辨析:从「能编译」到「能跑」到「能用」
java·泛型
LGL6030A11 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习
Lansonli13 小时前
大数据Spark(八十八):Spark任务资源之Standalone集群测试
java·服务器·spark
budingxiaomoli14 小时前
Spring AOP
java·spring·java-ee
特立独行的猫A14 小时前
Ionic + 仓颉语言的 cj-tauri 开发框架实战:开发精美移动端 APP
java·后端·python