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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM