spring mvc中@Response導致的亂碼問題

spring mvc中的@RequestBody與@ResponseBody的用法

@RequestBody 將HTTP請求正文轉換爲適合的HttpMessageConverter對象。
@ResponseBody 將內容或對象作爲 HTTP 響應正文返回,並調用適合HttpMessageConverter的Adapter轉換對象,寫入輸出流。

HttpMessageConverter接口,需要開啓。
AnnotationMethodHandlerAdapter將會初始化7個轉換器,可以通過調用AnnotationMethodHandlerAdapter的getMessageConverts()方法來獲取轉換器的一個集合 List

ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter

可以理解爲,只要有對應協議的解析器,你就可以通過幾行配置,幾個註解完成協議——對象的轉換工作!

PS:Spring默認的json協議解析由Jackson完成。

正是因爲@ResponseBody註解的使用,會導致註解的產生的數據亂碼, spring mvc默認使用的是ISO-8859-1,如果使用了UTF-8編碼會導致結果亂碼,需要做如下修改配置:

    <mvc:annotation-driven>
        <!-- spring mvc默認輸出utf-8展示 -->
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/plain;charset=UTF-8</value>
                        <value>text/html;charset=UTF-8</value>
                        <value>text/xml;charset=UTF-8</value>
                    </list>
                </property>
            </bean>
         </mvc:message-converters>
    </mvc:annotation-driven>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章