• 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的精细化控制和管理。

        

  • 相关阅读:
    python-Beautiful rose
    python-and和 or用法
    myspl数据库基础
    python 协程
    python-os 模块
    python-logging模块
    异常处理
    面向对象-类中的三个装饰器
    Flask初见
    django中的ContentType使用
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/3841066.html
Copyright © 2020-2023  润新知