SpringMVC框架

简介: Spring MVC核心组件包括:DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、Handler(处理器)和ViewResolver(视图解析器)。

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

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

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

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

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

最后一个就是视图解析器 ViewResolver,其作用是进行视图的解析,根据逻辑视图名解析成真正的视图(View)。当然,在现在前后端分离的开发模式中,基本上也不存在对应的jsp、freemarker这一类的视图解析了。
那刚才所提到的这些个组件呢,只有一个组件,是需要我们开发的,就是Handler,其他的组件,都不需要我们自己开发,框架底层已经提供了这些组件,并且现在我们直接基于SpringBoot进行项目开发,这些组件我们也不需要在做额外的配置了,SpringBoot底层已经自动配置好了。
SpringMVC的请求执行流程是什么样的?
返回MODELANDVIEW.请求适配器执行ANDLEREXECUTIONCHAIR返回MODELANDVIEW返回处理器执行链DISPATCHERSERVLETANDLERMAPPING7.RESPONSE响应HANDLERLNTERCEPTORZ(HANDLERINTERCEPTORL2.查找HANDLER.渲染视图4.执行HANDLERANDLERADAPTER,FREEMAKERVIEWRESOLVE处理器适配器RCONTROLLE视图解析器处理器1.请求URL处理映射器ANDLER前端控制器用户视图返象SP,IEN

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响应用户 。
SpringMVC的拦截器用过没有?

必答内容:
拦截器的应用场景还是很多的,比如在项目中,我们基于拦截器实现登录校验的功能、参数统一转换处理、数据的脱敏、统一编码处理等功能。 在SpringBoot项目拦截器的使用分为两步进行:
第一步呢,需要定义一个类实现HandlerInterceptor接口,然后再实现接口中的方法,比如:preHandle、postHandle、afterCompletion。
第二步呢,就是需要定义一个配置类,然后实现WebMvcConfigure,然后在这个配置类中配置拦截器,指定拦截器的拦截路径、排除哪些路径等信息。

可能继续追问的问题:
你说的这些个功能,过滤器好像也能干,那拦截器Interceptor 与 过滤器Filter有什么区别?

接口规范不同:过滤器需要实现Filter接口,而拦截器需要实现HandlerInterceptor接口。

拦截范围不同:过滤器Filter会拦截web服务器中的所有资源,而Interceptor只会拦截Spring环境的资源,主要就是Controller。

实现机制不同:过滤器在实现上是基于函数回调的,拦截器是基于java的反射机制的,属于面向切面编程的一种运用。
那其实在开发中,很多的功能,我们既可以通过过滤器Filter来实现,也可以通过拦截器Interceptor来实现。
SpringMVC怎么处理异常?
SpringMVC的异常处理,就比较简单了,可以直接使用Spring MVC中的全局异常处理器对异常进行统一处理,此时在我们的三层架构中,都不需要处理异常了,如果运行过程中出现异常,最终会被全局异常处理器捕获,然后返回统一的错误信息。
开发一个全局异常处理器需要使用到两个注解:@RestControllerAdvice 、@ExceptionHandler,@RestControllerAdvice加在全局异常处理器的这个类上,而@ExceptionHandler加在异常处理的方法上,来指定这个方法捕获什么样的异常。
那在定义异常处理方法的时候,可以也定义多个,根据业务的需求,可以针对不同类型的异常,进行不同的处理。
聊聊SpringMVC中的常用注解?
SpringMVC中的注解就比较多了,平时项目开发中比较常用的注解有以下几个:
1、@RequestMapping:用于映射请求路径,可以定义在类上和方法上。用于类上,则表示类中的所有的方法都是以该地址作为父路径 。我们也可以基于该注解中的method属性,来限定请求方式,由此也衍生了几个注解,如:@GetMapping、@PostMapping、@PutMapping、@DeleteMapping。
2、@RequestBody:该注解实现接收请求的json数据,将json转换为java对象 。
3、@RequestParam:指定请求参数的名称 ,如果请求参数名与方法形参不一致,可以使用此注解映射绑定 。也可以使用该注解来设置参数的默认值。
4、@PathViriable:从请求路径中获取请求参数(/user/{id}),传递给方法的形式参数 。
5、@ResponseBody:注解实现将controller方法返回值直接作为请求体响应,如果返回值是对象/集合,会转化为json对象响应给客户端 。
6、@RequestHeader:获取指定的请求头数据 。

目录
相关文章
|
2月前
|
人工智能 自然语言处理 供应链
2025盘点:8类RPA机器人,从值守型到智能型全解析
RPA机器人正重塑企业数字化转型,作为“数字员工”广泛应用于财务、政务、医疗、电商等领域。从有人值守的桌面助手到AI增强型智能体,RPA通过自动化重复任务,提升效率、降低错误率。2024年中国市场规模达67.9亿元,同比增长35.8%。未来,RPA将融合AI技术,迈向智能决策,成为企业提效降本的核心工具。
550 1
|
9月前
|
人工智能 算法 安全
AI智能体热潮下,打工人如何抢占未来职场先机?
当AI成为生活与工作的基础设施,生成式人工智能认证(GAI认证)为职场人提供了应对变革的关键工具。文章从AI智能体浪潮引发的职业革命出发,分析了技能需求重构、职业边界模糊及伦理责任升级的趋势,强调GAI认证通过系统性知识框架、全球认可的权威性和技术伦理教育,帮助个人从“工具使用者”转型为“规则制定者”。无论是传统行业从业者还是技术专家,GAI认证都能提升其在AI时代的竞争力,成为职业发展的护城河与未来入场券。掌握AI不是选择,而是必然,而GAI认证正是通向未来的桥梁。
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(三)
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(三)
563 1
|
前端开发 Java UED
SpringMVC全局异常处理+拦截器使用+参数校验
通过使用 SpringMVC 的全局异常处理、拦截器和参数校验,可以有效提升 Web 应用程序的安全性、稳定性和用户体验。这些技术的合理应用,不仅可以保证代码的健壮性,还能提高代码的可维护性,为开发高质量的 Web 应用程序提供了坚实的基础。
446 6
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的武汉市公交路线查询系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的武汉市公交路线查询系统的详细设计和实现(源码+lw+部署文档+讲解等)
289 7
|
安全 Java 测试技术
谈谈springboot的单例模式
【4月更文挑战第13天】在 Spring Boot 和更广泛的 Spring 框架中,单例模式扮演着核心的角色,特别是在 Spring 的 Bean 生命周期和管理中。这里我们详细探讨一下 Spring Boot 中单例模式的运作原理、优势及其潜在问题。
652 7
|
关系型数据库 MySQL Java
连接 MySQL 数据库使用 JDBC
连接 MySQL 数据库使用 JDBC
358 0
|
消息中间件 缓存 运维
云HIS运维运营平台 云HIS解决方案
云HIS重建统一的信息架构体系,重构管理服务流程,重造病人服务环境,向不同类型的医疗机构提供SaaS化HIS服务解决方案。
490 3
|
设计模式 JavaScript Java
DAO设计模式
DAO设计模式 1.认识DAO 2.DAO各部分的详解 3.DAO设计模式流程
390 0
DAO设计模式
阿里巴巴开发手册“泰山”版它来了,1.4.0+终极版+阿里内部PPT
阿里的《Java开发手册》距离上次发布已经过去了 10 个月了,而这次发布也增加了很多干货内容,比如:新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,发布日志如下图所示: