`
琉璃月
  • 浏览: 44777 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

spring mvc @ResponseBody 中文乱码

阅读更多
  spring 3 mvc 的 @ResponseBody返回数据用起来很方便,但是中文乱码,而且返回的Content-Type不带编码信息,解决方法如下

方法一:
自己继承AbstractHttpMessageConverter,写一个类
复制 StringHttpMessageConverter.java的代码,将
public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");


改为
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");


spring-servlet的配置文件如下

<bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean class="com.renren001.converter.UTF8StringHttpMessageConverter" />
        </list>
    </property>
</bean>


方法二:
如果不写新的类,可以直接像下面这样配置

<bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean
                class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <bean class="org.springframework.http.MediaType">
                            <constructor-arg index="0" value="text" />
                            <constructor-arg index="1" value="plain" />
                            <constructor-arg index="2" value="UTF-8" />
                        </bean>
                    </list>
                </property>
            </bean>
        </list>
    </property>
</bean>


注意的地方:
上面的配置应该写在controller的扫描配置之前
推荐使用下面的方法,原因如下
方法一返回的Content-Type为:text/html
方法二返回的Content-Type为:text/plain;charset=UTF-8

但是你可能会碰到下面的问题:
当你使用 http://www.codeif.com/topic/772 这篇文章介绍的方法返回数据的时候却一直不正常。我们知道messageConverters是一个HttpMessageConverter< ?>[] 数组,而且在
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter类中你会看到下面的代码,
this.messageConverters = new HttpMessageConverter[] { new ByteArrayHttpMessageConverter(), stringHttpMessageConverter, new SourceHttpMessageConverter(), new XmlAwareFormHttpMessageConverter() };


因此我们只需要把上面的代码改为如下:

<bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <bean
                class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
            <bean
                class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <bean class="org.springframework.http.MediaType">
                            <constructor-arg index="0" value="text" />
                            <constructor-arg index="1" value="plain" />
                            <constructor-arg index="2" value="UTF-8" />
                        </bean>
                    </list>
                </property>
            </bean>
            <bean
                class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
            <bean
                class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />
        </list>
    </property>
</bean>
分享到:
评论

相关推荐

    springMVC3使用@ResponseBody向浏览器返回 json,注意区分jar包前缀

    --处理 @ResponseBody 中文乱码问题 --&gt; &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&gt; &lt;property name="messageConverters"&gt; &lt;list&gt; &lt;!-- Support...

    SpringMVC中解决@ResponseBody注解返回中文乱码问题

    总的来说,解决SpringMVC中`@ResponseBody`注解返回中文乱码问题的关键在于正确配置`HttpMessageConverter`,确保其支持UTF-8编码,并将这些配置放在`&lt;mvc:annotation-driven&gt;`元素之前。通过上述方法,可以有效地...

    spring+mybatis 通过@ResponseBody返回结果中文乱码的解决方法

    spring+mybatis 通过@ResponseBody返回结果中文乱码的解决方法 在使用 Spring+Mybatis 框架时,经常会遇到一个问题,就是通过 @ResponseBody 返回结果时,中文字符会出现乱码的问题。这是因为在 Spring MVC 中,...

    Spring MVC中默认的ResponseBody为String的乱码问题.pdf

    在Spring MVC框架中,开发者经常遇到ResponseBody返回的字符串出现乱码的问题,特别是当字符串中包含中文字符时。这是因为Spring MVC默认使用了StringHttpMessageConverter来处理Response Body中的字符串,而这个...

    spring mvc 自學筆記

    在 Spring MVC 中处理中文乱码通常有两种方法: - **设置字符编码过滤器**:通过配置一个全局的字符编码过滤器来解决所有请求的乱码问题。 ```java @WebFilter(urlPatterns = "/*") public class ...

    Spring MVC注解开发总结

    在Spring MVC框架中,注解开发使得我们能够更简洁、高效地编写Web应用程序。下面将对标题和描述中提到的知识点进行详细总结。 一、Spring MVC注解开发的基本实现步骤 1. **创建Web工程**:首先需要创建一个Java ...

    Spring MVC面试题(2022最新版)

    如何解决POST请求中文乱码问题,GET的又如何处理呢? - 对于POST请求,可以在web.xml中配置字符编码过滤器,确保所有请求都使用统一的字符编码: ```xml &lt;filter-name&gt;characterEncodingFilter &lt;filter-class&gt;...

    Spring MVC面试宝典1.pdf

    ##### 3.4 如何解决POST请求中文乱码问题,GET的又如何处理呢? - **POST请求**:在web.xml中配置过滤器CharacterEncodingFilter来设置字符编码。 - **GET请求**:同样可以通过配置过滤器解决,也可以通过修改Tomcat...

    jackon 2.9.1

    在描述中提到了`@ResponseBody`注解,这是Spring MVC框架的一部分。Spring MVC是Spring框架的一个模块,用于构建Web应用程序。`@ResponseBody`是Spring MVC中的一个注解,它告诉Spring框架将方法的返回值直接写入...

    SSM框架整合(解决中文乱码,二级缓存,JSON,事务)

    SSM框架整合是Java开发中常见的一种技术栈组合,包括Spring、Spring MVC和MyBatis。这个项目包针对的是在实际开发中可能会遇到的一些常见问题,如中文乱码、二级缓存、JSON处理以及事务管理。以下是这些知识点的详细...

    Spring MVC 关于controller的字符编码问题

    这是因为Spring MVC默认使用ISO-8859-1字符集,而中文字符不在这个字符集中。 在处理字符编码问题时,有几种常见的解决方案: 1. **不使用`@ResponseBody`注解**: 当不使用`@ResponseBody`时,你可以直接操作`...

    json 中文乱码解决方案

    **假设场景**:一个简单的Java Web应用,使用Spring MVC框架,前端使用jQuery发起Ajax请求获取包含中文的JSON数据。 **步骤**: 1. **配置前端页面**: ```html &lt;!DOCTYPE html&gt; ...

    Springmvc如何返回xml及json格式数据

    总结,Spring MVC通过`@ResponseBody`注解和指定`produces`属性可以方便地返回XML和JSON格式的数据。返回XML时需要关注字符编码,返回JSON时则可以直接返回对象。避免一些错误尝试,如直接返回XML字符串或未序列化的...

    SpringMVC+Mybatis JAVA配置 非XML

    1,搭建SpringMVC 2,加载properties配置文件 3,集成mybatis ...7,解决@ResponseBody return String的中文乱码问题 8,配置静态资源映射ResourceHandlers 9,配置ViewControllers 10,配置filter 11,配置拦截器

    springmvc-restful

    本篇将深入探讨"springmvc-restful"主题,特别是关于乱码的处理以及如何实现Spring MVC的过滤器。 1. **RESTful API**: REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于...

    Spring MVC的文件下载实例详解

    Spring MVC是Java开发中常用的Web框架,它基于Servlet API构建,提供了模型-视图-控制器(MVC)架构。本文将深入解析如何在Spring MVC中实现文件下载功能,包括文件读取、响应头设置、以及如何处理不同浏览器的兼容...

    SpringMVC面试题(2020最新版).pdf

    处理中文乱码问题,可以设置HttpServletRequest的编码方式,对于POST请求,可以在过滤器中设置request.setCharacterEncoding("UTF-8");GET请求一般默认处理正确,但如果URL编码了,也需要解码。 Spring MVC的异常...

    SpringMVC面试题.pdf

    Spring MVC 是一个强大的Java Web开发框架,它遵循MVC(Model-View-Controller)设计模式,使得开发者能够将业务逻辑、视图呈现和控制层逻辑有效地分离,从而提高代码的可维护性和可测试性。Spring MVC的核心组件...

    SpringMVC解决乱码

    然而,在使用SpringMVC时,可能会遇到乱码问题,例如在使用@ResponseBody注解时返回的数据出现乱码。在本文中,我们将讨论解决SpringMVC乱码问题的两种方法。 方法一:配置AnnotationMethodHandlerAdapter 在...

    springmvc开发笔记

    Spring MVC默认采用ISO-8859-1编码,这在处理中文或其他非ASCII字符时会引发乱码。 #### 二、Spring MVC 默认编码分析 Spring MVC中处理HTTP消息的转换器`StringHttpMessageConverter`定义了默认的编码方式为ISO-...

Global site tag (gtag.js) - Google Analytics