歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Spring下@ResponseBody響應中文內容亂碼問題

引言:在JQuery的Ajax請求中,收到的基於後台返回回來的結果出現亂碼,在後台其內容正確,到了前台之後,確是亂碼??????,該如何解決呢?

1.  問題的提出

前端基於JQuery的Ajax進行頁面請求,但是收到的響應信息中的中文確是亂碼;後台使用了基於Spring的@ResponseBody來對響應結果進行了封裝。

2. 分析問題

2.1  JQuery前端排除

基於查看,JQuery的前端Ajax請求默認的都是基於UTF-8的請求,指定與否不影響結果信息。

如果堅持要加,在前端javaScript代碼中加入:

contentType: "application/x-www-form-urlencoded; charset=utf-8",

2.2 後端Spring配置信息的分析

後端使用了如下配置來進行JacksonMapping信息的映射:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >   
    <property name="messageConverters">   
        <list> 
          <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
        </list> 
    </property>   
</bean>   

經過網上的查找,發現可以使用org.springframework.http.converter.StringHttpMessageConverter來進行charset的強制轉換。

3. 問題的解決

在RequestMappingHandlerAdapter中加入StringHttpMessageConverter來進行信息的編碼轉換:

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" >   
        <property name="messageConverters">   
        <list> 
          <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> 
          <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
                <property name="supportedMediaTypes"> 
                    <list> 
                        <value>text/plain;charset=UTF-8</value> 
                    </list> 
                </property> 
            </bean> 
        </list> 
    </property>   
  </bean>

經過分析,可以看到其實就是在其中加入了一個基於String信息的MessageConverter,將其轉換為UTF-8.

4.  應用配置,問題解決

修改配置信息,重啟系統,然後就可以在系統中看到正常的頁面顯示信息了。

總結分析:

spring從3.0開始提供一個HttpMessageConverter<T>接口,這個接口相當有用,spring可以針對Http報文頭的ContentType來調用該類的默認實現類將請求和響應進行相應的轉換。用戶可以基於這個接口實現對Request和Response的精細化控制和管理。

Spring中如何配置Hibernate事務 http://www.linuxidc.com/Linux/2013-12/93681.htm

Struts2整合Spring方法及原理 http://www.linuxidc.com/Linux/2013-12/93692.htm

基於 Spring 設計並實現 RESTful Web Services http://www.linuxidc.com/Linux/2013-10/91974.htm

Spring-3.2.4 + Quartz-2.2.0集成實例 http://www.linuxidc.com/Linux/2013-10/91524.htm

使用 Spring 進行單元測試 http://www.linuxidc.com/Linux/2013-09/89913.htm

運用Spring注解實現Netty服務器端UDP應用程序 http://www.linuxidc.com/Linux/2013-09/89780.htm

Spring 3.x 企業應用開發實戰 PDF完整高清掃描版+源代碼 http://www.linuxidc.com/Linux/2013-10/91357.htm

Spring 的詳細介紹:請點這裡
Spring 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved