Spring MVC

简介: Spring MVC核心组件包括:DispatcherServlet(核心控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、Handler(处理器)和ViewResolver(视图解析器)。请求流程为:用户请求→DispatcherServlet分发→HandlerMapping查找处理器→HandlerAdapter执行Handler→返回ModelAndView→ViewResolver解析视图→渲染响应。除Handler外,其余组件均由框架自动配置,尤其在Spring Boot中无需手动设置。

Spring MVC的核心组件有哪些?
好的,SpringMVC中的组件比较多,职责各不相同,那我就说一下核心的几个。

那首先第一个就是DispatchServlet,叫核心控制器,这个是SpringMVC中最为核心的组件,其本质就是一个Servlet,用于将请求分发给相应的处理程序,通过DispatchServlet这个组件,就可以降低组件之间的耦合度。

那第二个核心组件就是HandlerMapping,叫处理器映射器,这个组件的作用,就是根据请求的url匹配能够处理这次请求的Handler(指Controller中的方法)

那还有就是HandlerAdapter,叫处理器适配器,其作用呢,就是来执行Handler处理器的,并获取到执行的结果。

第四个核心组件,就是Handler,叫处理器,其实可以简单理解为,就是我们开发的Controller中的方法。

最后一个就是视图解析器 ViewResolver,其作用是进行视图的解析,根据逻辑视图名解析成真正的视图(View)。当然,在现在前后端分离的开发模式中,基本上也不存在对应的jsp、freemarker这一类的视图解析了。
那刚才所提到的这些个组件呢,只有一个组件,是需要我们开发的,就是Handler,其他的组件,都不需要我们自己开发,框架底层已经提供了这些组件,并且现在我们直接基于SpringBoot进行项目开发,这些组件我们也不需要在做额外的配置了,SpringBoot底层已经自动配置好了。
SpringMVC的请求执行流程是什么样的?SpringMVC的请求执行流程如下所示:
1). 用户发送请求到前端控制器DispatcherServlet 。
2). DispatcherServlet接收到请求之后,会调用HandlerMapping(处理器映射器),来查找能够处理本次请求的处理器,生成处理器对象及处理器拦截器(如果有),然后再一起返回给DispatcherServlet 。
3). DispatcherServlet调用HandlerAdapter处理器适配器,让其执行对应的Handler。
4). HandlerAdapter执行对应的Handler(Controller中的方法),并将执行的结果封装在ModelAndView中返回给DispatcherServlet。
5). DispatcherServlet将ModelAndView传给ViewReslover(视图解析器),视图解析器负责对视图进行解析处理,最后返回视图对象View。
6). DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
7). DispatcherServlet响应用户 。

相关文章
|
监控 负载均衡 算法
构建高效微服务架构的五大核心组件
【4月更文挑战第6天】随着现代业务需求的多样化和复杂性增加,传统的单体应用已无法满足快速迭代与灵活部署的需求。微服务架构应运而生,以其高度模块化、独立部署和可伸缩性成为企业转型的关键。本文聚焦于构建高效微服务架构的核心组件,从服务发现、配置管理、负载均衡、容错处理到服务监控五个方面进行深入剖析,旨在提供一套全面的技术指南以支持后端开发的最佳实践。
|
设计模式 负载均衡 Nacos
远程调用 OpenFeign 底层原理解析
Feign 是Springcloud 提供一个声明式的伪Http客户端 它使得调用远程服务就像调用本地服务一样简单 只需要创建一个接口 并且添加注解就可以 Nacos 很好的兼容Feign Feign 默认集成了Ribbon 所以在Nacos 下使用Fegin 默认就实现了负载均衡的效果
2516 1
远程调用 OpenFeign 底层原理解析
|
7月前
|
存储 缓存 应用服务中间件
阿里云轻量应用服务器深度测评:2核2G5M 80G系统盘 38元1年
阿里云轻量应用服务器2核2G怎么样?来看看阿里云轻量应用服务器2核2G深度测评。目前阿里云2核2G轻量服务器有一台68元一年的配置,自带5M固定带宽、80G系统盘,秒杀38元一年,常规优惠价是68元,定闹钟抢购的话是38元一年。
|
10月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
781 2
|
JSON 关系型数据库 MySQL
Mysql(5)—函数
MySQL提供了许多内置的函数以帮助用户进行数据操作和分析。这些函数可以分为几类,包括聚合函数、字符串函数、数值函数、日期和时间函数、控制流函数等。
484 1
Mysql(5)—函数
|
7月前
|
存储 NoSQL 关系型数据库
Geohash 编码
Geohash编码将经纬度转换为字符串,通过不断二分地球经纬度区间,交叉组合生成区域编码,再转为Base32简化表示。它用于高效存储和查询地理位置,广泛应用于Redis、MySQL等系统,具有相同前缀的编码代表相近区域,便于空间索引与检索。
|
存储 消息中间件 JavaScript
vue组件传值的12种方式
【10月更文挑战第1天】
1609 159
|
监控 Java
线程池大小如何设置
在并发编程中,线程池是一个非常重要的组件,它不仅能够提高程序的响应速度,还能有效地利用系统资源。合理设置线程池的大小对于优化系统性能至关重要。本文将探讨如何根据应用场景和系统资源来设置线程池的大小。
|
机器学习/深度学习 人工智能 并行计算
一文了解火爆的DeepSeek R1 | AIGC
DeepSeek R1是由DeepSeek公司推出的一款基于强化学习的开源推理模型,无需依赖监督微调或人工标注数据。它在数学、代码和自然语言推理任务上表现出色,具备低成本、高效率和多语言支持等优势,广泛应用于教育辅导、金融分析等领域。DeepSeek R1通过长链推理、多语言支持和高效部署等功能,显著提升了复杂任务的推理准确性,并且其创新的群体相对策略优化(GRPO)算法进一步提高了训练效率和稳定性。此外,DeepSeek R1的成本低至OpenAI同类产品的3%左右,为用户提供了更高的性价比。
3428 11
|
存储 Java 数据库
java spring boot 数据库密码解密
java spring boot 数据库密码解密