SpringMVC注解驱动的作用

https://blog.csdn.net/DDDDeng_/article/details/107151784
https://blog.csdn.net/u011066470/article/details/112438252
https://blog.csdn.net/qq_35029061/article/details/82945761

1. 概述作用

Tip 💡
在spring mvc的各个组件种,处理器映射器、处理器适配器、视图解析器成为spring mvc的三大组件

  1. <mvc:annotation-driven> Spring MVC用来提供Controller请求转发,json自动转换等功能。,默认会帮我们注册默认处理请求,参数和返回值的类。

  2. 默认底层会集成jackson进行对象或集合的json格式字符串的转换,且使用它时候,自动加载ReuestMappingHandlerMapping(处理映射器)
    和RequestMappingHandlerAdapter(处理适配器)

  3. 在spirng-xml的配置文件中使用<mvc:annotation-driven> 替代注解处理器和适配器的配置

2. 使用场景

  1. <mvc:annotation-driven>会自动注册 RequestMappingHandlerMappingRequestMappingHandlerAdapter两个Bean,这是Spring MVC为@Controller分发请求所必需的,并且提供了数据绑定支持@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持读写XML的支持(JAXB)和读写JSON的支持(默认Jackson)等功能。
  2. 数据返回响应:
    • 当我们需要controller返回一个 javabean,list,map等数据的json对象时,可以设定<mvc:annotation-driven />
    • 静态资源的访问时

Tip 💡
一开始我在写配置的时候,只写了<context:component-scan/>,并没有使用<mvc:annotation-driven/>,servlet拦截*.do,.do请求可以被正确捕捉和处理。

后来为了解决静态资源访问的问题,servlet改成了拦截所有请求,即/,并添加了默认的servlet,这时候*.do请求不能被控制器捕捉了,页面错误为404。直到添加了<mvc:annotation-driven/>之后,.do请求才又能被正确捕捉和处理。

3. 方式

a> 注解

@EnableWebMvc //开启MVC注解驱动

b> 配置文件

导入mvc 名称空间 xmlns:mvc="http://www.springframework.org/schema/mvc"
<!-- 开启mvc注解驱动 -->
<mvc:annotation-driven>
    <mvc:message-converters>
        <!-- 处理响应中文内容乱码 -->
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="defaultCharset" value="UTF-8" />
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html</value>
                    <value>application/json</value>
                </list>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>
posted @ 2021-11-10 17:01  MikiKawai  阅读(773)  评论(1编辑  收藏  举报