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的三大組件
-
<mvc:annotation-driven> Spring MVC用來提供Controller請求轉發,json自動轉換等功能。,默認會幫我們注冊默認處理請求,參數和返回值的類。
-
默認底層會集成jackson進行對象或集合的json格式字符串的轉換,且使用它時候,自動加載ReuestMappingHandlerMapping(處理映射器)
和RequestMappingHandlerAdapter(處理適配器) -
在spirng-xml的配置文件中使用<mvc:annotation-driven> 替代注解處理器和適配器的配置
2. 使用場景
- <mvc:annotation-driven>會自動注冊
RequestMappingHandlerMapping
與RequestMappingHandlerAdapter
兩個Bean,這是Spring MVC為@Controller分發請求所必需的,並且提供了數據綁定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持讀寫XML的支持(JAXB)和讀寫JSON的支持(默認Jackson)等功能。 - 數據返回響應:
- 當我們需要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>