`

spring mvc3中 ResponseBody中文乱码

 
阅读更多

使用spring mvc3的@ResponseBody注解以期待返回json时,却发现返回值中文乱码。

研究后发现,spring使用该注解时在代码内部使用了硬编码iso-8859-1

 

解决方案:

想法有两种,一种是重写注解,还有一种是使用spring的BeanPostProcessor接口实现

 

/**
 * 解决spring MVC3 中@ResponseBody的中文乱码问题。在bean中注册即可
 */
public class UTF8StringBeanPostProcessor implements BeanPostProcessor {
	@Override
	public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
		if (bean instanceof StringHttpMessageConverter) {
			MediaType mediaType = new MediaType("text", "plain", Charset.forName("UTF-8"));
			List<MediaType> types = new ArrayList<MediaType>();
			types.add(mediaType);
			((StringHttpMessageConverter) bean).setSupportedMediaTypes(types);
		}
		return bean;
	}

	@Override
	public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
		return bean;
	}
}

 再在spring的xml中注册

<!-- 解决使用@ResponseBody 的中文乱码。 -->
	<bean class="xxx.xxx.xxx.UTF8StringBeanPostProcessor">
	</bean>
 
分享到:
评论
6 楼 onlyOneToOne 2015-04-30  
wsc830719 写道
@RequestMapping(value = "/json_stationsByDriver/{driverId}", method = RequestMethod.POST, produces = { "text/plain;charset=UTF-8" })
@Grant(name = "session")
@ResponseBody
新版本的这样就行了/
 
5 楼 wsc830719 2015-01-09  
@RequestMapping(value = "/json_stationsByDriver/{driverId}", method = RequestMethod.POST, produces = { "text/plain;charset=UTF-8" })
@Grant(name = "session")
@ResponseBody
新版本的这样就行了/
4 楼 jasonlong10 2015-01-09  
  终于找到个可用的方法了!~赞
3 楼 stephenluu 2013-12-27  
是挺快的!
2 楼 wsc830719 2013-12-27  
赞 办法简单高效。已经采用有效。 感谢分享。
1 楼 onlyOneToOne 2013-08-29  
   用上了,很好 多谢!

相关推荐

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

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

    spring mvc 自學筆記

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

    Spring MVC注解开发总结

    3. **导入坐标**:在项目中引入Spring MVC的依赖,通常通过Maven或Gradle等构建工具来管理。 4. **定义处理请求的功能类**:创建包含业务逻辑的控制器类,并使用`@Controller`注解标记,例如`UserController`。 5....

    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面试题(2022最新版)

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

    json 中文乱码解决方案

    本文将详细介绍如何解决JSON中的中文乱码问题,并提供几种简单实用的方法来帮助开发者避免这类问题的发生。 #### 一、问题背景与原因分析 在Web开发中,前后端之间传递的数据格式往往采用JSON(JavaScript Object ...

    Spring MVC面试宝典1.pdf

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

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

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

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

    -- @ResponseBody() spring-mvc 3 xml 配置--&gt; &lt;!--处理 @ResponseBody 中文乱码问题 --&gt; &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&gt; ...

    flex上传下载 并解决中文乱码

    例如,在Spring MVC中,可以在配置文件中指定`&lt;filter&gt;`处理编码问题,或者在Controller方法中使用`@RequestParam(value = "paramName", required = false, defaultValue = "", encoding = "UTF-8")`注解。...

    Spring MVC的文件下载实例详解

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

    springmvc-restful

    在IT行业中,Spring MVC是一个广泛使用的Java Web框架,它提供了构建高效、灵活和模块化的Web应用程序的能力。在处理RESTful API时,Spring MVC扮演着核心角色。本篇将深入探讨"springmvc-restful"主题,特别是关于...

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

    总结来说,Spring MVC中处理Controller的字符编码问题主要是通过设置响应的`Content-Type`,使用`@RequestMapping`的`produces`属性,或者直接操作`HttpServletResponse`来指定字符集。同时,了解如何使用不同的参数...

    jackon 2.9.1

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

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

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

    springmvc开发笔记

    ### Spring MVC 开发笔记:解决异步刷新时的乱码问题 #### 一、问题背景与分析 ...无论选择哪种方案,都可以确保在Spring MVC开发过程中,异步请求能够正确地处理中文等非ASCII字符,避免乱码问题的发生。

    SpringMVC面试题.pdf

    Spring MVC 是一个强大的Java ...以上是对Spring MVC面试中常见的一些知识点的详细解答,这些内容涵盖了Spring MVC的基本概念、工作流程、核心组件、与其他框架的区别以及与AJAX的交互等方面,有助于理解和准备面试。

    springmvc 发送ajax出现中文乱码的解决方法汇总

    在开发Web应用时,Spring MVC和Ajax的交互过程中,经常遇到中文乱码的问题。这个问题主要出现在数据从服务器传输到客户端的过程中,由于编码设置不正确,导致中文字符无法正常显示。以下将详细介绍四种解决Spring ...

    SpringMVC(九)文件上传和下载

    在Spring MVC中,可以使用jQuery的`$.ajax`或`$.fileUpload`插件结合`@ResponseBody`注解来实现Ajax文件上传。 总结,Spring MVC提供了强大的支持来处理文件上传和下载,开发者可以通过合理配置和编程,构建高效、...

Global site tag (gtag.js) - Google Analytics