SpringMVC入门学习(十)----mvc:annotation-driven标签介绍

目录


回到顶部

1、关于mvc:annotation-driven作用

1\]、\ 会自动向容器中注册如下组件,并且会代替之前默认的组件: * HandlerMapping :请求映射,负责根据用户请求url找到要执行的Handler * RequestMappingHandlerMapping:支持@RequestMapping注解 * BeanNameUrlHandlerMapping:将controller类的名字映射为请求url * HandlerAdapter : 处理器适配器,用于请求处理,通过HandlerAdapter对处理器进行执行 * RequestMappingHandlerAdapter:处理@Controller和@RequestMapping注解的处理器 * HttpRequestHandlerAdapter:处理继承了HttpRequestHandler创建的处理器 * SimpleControllerHandlerAdapter:处理继承自Controller接口的处理器 * ExceptionResolver:处理异常的解析器 * ExceptionHandlerExceptionResolver * ResponseStatusExceptionResolver * DefaultHandlerExceptionResolver \ 最主要的作用是配置两个最常用的组件RequestMappingHandlerMapping和RequestMappingHandlerAdapter。 * RequestMappingHandlerMapping是HandlerMapping的实现类,它会在容器启动的时候,扫描容器内的bean,解析带有@RequestMapping注解的方法,并将其解析为url和handlerMethod键值对方式注册到请求映射表中。 * RequestMappingHandlerAdapter是HandlerAdapter的实现类,它是处理请求的适配器,说白了,就是确定调用哪个类的哪个方法,并且构造方法参数,返回值。 > \是告知Spring容器,我们启用注解驱动,支持@RequestMapping注解,这样我们就可以使用@RequestMapping来配置处理器。 > > \标签是告诉Spring容器来扫描指定包下的类,并注册被@Component,@Controller,@Service,@Repository等注解标记的组件相似。 ② 还将提供以下支持: * 支持使用 ConversionService 实例对表单参数进行类型转换 * 支持使用 @NumberFormat、@DateTimeFormat 注解完成数据类型的格式化 * 支持使用 @Valid 注解对 JavaBean 实例进行 JSR 303 验证 * 支持使用 @RequestBody 和 @ResponseBody 注解 [回到顶部](https://www.cnblogs.com/tanghaorong/p/14761203.html#_labelTop "回到顶部") ### 2、mvc:annotation-driven在什么时候必须配置 \[1\]、直接配置响应的页面:无需经过控制器来执行结果 ;但会导致其他请求路径失效,需要配置mvc:annotation-driven标签 > \ \[2\]、RESTful-CRUD操作,删除时,通过jQuery执行delete请求时,找不到静态资源,需要配置mvc:annotation-driven标签 > \ 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler,它会对进入 DispatcherServlet 的请求进行筛查,如果发现是没有经过映射的请求,就将该请求交由 WEB 应用服务器默认的 Servlet 处理,如果不是静态资源的请求,才由 DispatcherServlet 继续处理。 \[3\]、配置类型转换器服务时,需要指定转换器服务引用 > \ 会将自定义的 ConversionService 注册到 Spring MVC 的上下文中 \[4\]、后面完成JSR 303数据验证,也需要配置 [回到顶部](https://www.cnblogs.com/tanghaorong/p/14761203.html#_labelTop "回到顶部") ### 3、关于mvc:annotation-driven配合使用的几种情况 **\[1\]、既没有配置 \ 也没有配置 \** 结果:动态资源像@RequestMapping映射的资源能访问,静态资源(.html,.js,.img)不能访问 这里用到的是默认的注解请求映射------DefaultAnnotationHandlerMapping,它里面有一个handlerMap里面包含了映射,所以动态的能访问。静态不能访问,就是因为里面没有保存静态资源映射。 ![](https://file.jishuzhan.net/article/1753300247620096002/9017553d4f2497f29f13c763d744c435.webp) **\[2\]、配置了 \ 但没有配置 \** 结果:可以加载静态资源,动态资源不行。 可以发现DefaultAnnotationHandlerMapping没有了,所以不能存储那些请求信息了。 ![](https://file.jishuzhan.net/article/1753300247620096002/b068bddb37adfbc11874d3efadb18d94.webp) **\[3\]、既配置了\ 又配置 \** 结果:动态资源和静态资源都能访问 参考链接: * [SpringMVC的\_51CTO博客_springmvc中的mvc分别代表什么](https://blog.51cto.com/u_15155091/2724464 "SpringMVC的_51CTO博客_springmvc中的mvc分别代表什么") * [springmvc进阶(4):mvc:annotation-driven详解_\ @configuration-CSDN博客](https://blog.csdn.net/abc997995674/article/details/80511545 "springmvc进阶(4):mvc:annotation-driven详解_ @configuration-CSDN博客") * [springmvc进阶(3):mvc:annotation-driven和mvc:default-servlet-handler在springmvc中的作用_org.springframework.web.servlet.mvc.annotation.def-CSDN博客](https://blog.csdn.net/abc997995674/article/details/80509950 "springmvc进阶(3):mvc:annotation-driven和mvc:default-servlet-handler在springmvc中的作用_org.springframework.web.servlet.mvc.annotation.def-CSDN博客") 来源:[SpringMVC入门学习(十)----mvc:annotation-driven标签介绍 - 唐浩荣 - 博客园 (cnblogs.com)](https://www.cnblogs.com/tanghaorong/p/14761203.html "SpringMVC入门学习(十)----mvc:annotation-driven标签介绍 - 唐浩荣 - 博客园 (cnblogs.com)")

相关推荐
JienDa26 分钟前
JienDa聊PHP:CSDN博客仿站实战中PHP框架的协同架构方略
java·架构·php
大迪吃小迪32 分钟前
每秒 400 请求场景下,线程池如何合理配置?
java·开发语言
2***s6721 小时前
【Go】Go语言基础学习(Go安装配置、基础语法)
服务器·学习·golang
雨中飘荡的记忆2 小时前
财务对账系统设计与实现
java
0***h9422 小时前
使用 java -jar 命令启动 Spring Boot 应用时,指定特定的配置文件的几种实现方式
java·spring boot·jar
雨中飘荡的记忆2 小时前
布式事务详解:从理论到实践(RocketMQ + Seata)
java·rocketmq
i***48612 小时前
微服务生态组件之Spring Cloud LoadBalancer详解和源码分析
java·spring cloud·微服务
zzlyx992 小时前
用C#采用Avalonia+Mapsui在离线地图上插入图片画信号扩散图
java·开发语言·c#
Aevget2 小时前
MyEclipse全新发布v2025.2——AI + Java 24 +更快的调试
java·ide·人工智能·eclipse·myeclipse
韩曙亮2 小时前
【人工智能】AI 人工智能 技术 学习路径分析 ① ( Python语言 -> 微积分 / 概率论 / 线性代数 -> 机器学习 )
人工智能·python·学习·数学·机器学习·ai·微积分