最近俺的项目中使用spring3 mvc,前端使用jquery,感觉真是爽啊,尤其是采用注解后感觉整体的结构清晰,
配置很少,能够快速的开发应用,真是做到开发,约定俗称了。
但是在使用@ResponseBody 时,遇到了编码的问题,俺正统用的utf-8,结果前台竟然是乱码,只好baidu+google啦。
在网上浏览了好多,大家各显其能,有的自己写Converter,有的改response编码。大部分兄弟们都是采用的bean注入方式来设定编码。下面是个网上的例子
http://tdcq.iteye.com/blog/842222
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<property name="messageConverters">
<list>
<bean class = "org.springframework.http.converter.StringHttpMessageConverter">
<property name = "supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<mvc:annotation-driven />
上面这段代码,我试了,发现偶尔起作用,大部分时间不起作用。去掉<mvc:annotation-driven />后起作用了,但是可能其他代码会受到影响。
随后俺跟随断点,看看到底是咋走的?俺通过StackTrace看到,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
这个类中存在supportedMediaTypes,这个类的supportedMediaTypes一直都是iso-8859-1,根本不是俺想注入的utf-8,俺当时就想啦,那俺注入这里面不就行啦!
俺尝试如下:
<bean
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="stringHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="stringHttpMessageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
一试,竟然成功了。随后俺跟了跟断点起作用了。
这里奉劝各位兄弟姐妹,网上的东西还是要仔细研究的,不要转来转去的。
分享到:
相关推荐
-- @ResponseBody() spring-mvc 3 xml 配置--> <!--处理 @ResponseBody 中文乱码问题 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> ...
spring+mybatis 通过@ResponseBody返回结果中文乱码的解决方法 在使用 Spring+Mybatis 框架时,经常会遇到一个问题,就是通过 @ResponseBody 返回结果时,中文字符会出现乱码的问题。这是因为在 Spring MVC 中,...
总结来说,解决Spring MVC中ResponseBody返回String类型中文乱码的关键在于修改StringHttpMessageConverter的默认字符集,使其支持UTF-8编码。这可以通过自定义配置或使用BeanPostProcessor实现,后者具有更高的灵活...
总的来说,解决SpringMVC中`@ResponseBody`注解返回中文乱码问题的关键在于正确配置`HttpMessageConverter`,确保其支持UTF-8编码,并将这些配置放在`<mvc:annotation-driven>`元素之前。通过上述方法,可以有效地...
### json 中文乱码解决方案 在处理JSON数据时,经常会出现中文乱码的问题,尤其是在不同编码格式间进行转换时更为常见。本文将详细介绍如何解决JSON中的中文乱码问题,并提供几种简单实用的方法来帮助开发者避免这...
在 Spring MVC 中处理中文乱码通常有两种方法: - **设置字符编码过滤器**:通过配置一个全局的字符编码过滤器来解决所有请求的乱码问题。 ```java @WebFilter(urlPatterns = "/*") public class ...
3. **其他注解**:Spring MVC还有许多其他注解,如`@PathVariable`用于处理URI模板变量,`@RequestParam`用于处理请求参数,`@ModelAttribute`用于模型绑定等。 综上所述,Spring MVC的注解开发极大地简化了Web应用...
如何解决POST请求中文乱码问题,GET的又如何处理呢? - 对于POST请求,可以在web.xml中配置字符编码过滤器,确保所有请求都使用统一的字符编码: ```xml <filter-name>characterEncodingFilter <filter-class>...
在描述中提到了`@ResponseBody`注解,这是Spring MVC框架的一部分。Spring MVC是Spring框架的一个模块,用于构建Web应用程序。`@ResponseBody`是Spring MVC中的一个注解,它告诉Spring框架将方法的返回值直接写入...
##### 3.4 如何解决POST请求中文乱码问题,GET的又如何处理呢? - **POST请求**:在web.xml中配置过滤器CharacterEncodingFilter来设置字符编码。 - **GET请求**:同样可以通过配置过滤器解决,也可以通过修改Tomcat...
1,搭建SpringMVC 2,加载properties配置文件 3,集成mybatis ...7,解决@ResponseBody return String的中文乱码问题 8,配置静态资源映射ResourceHandlers 9,配置ViewControllers 10,配置filter 11,配置拦截器
SpringMVC乱码解决方案 SpringMVC是一个流行的Java Web框架,用于构建Web应用程序。然而,在使用SpringMVC时,可能会遇到乱码问题,例如在使用@ResponseBody注解时返回的数据出现乱码。在本文中,我们将讨论解决...
SSM框架整合是Java开发中常见的一种技术栈组合,包括Spring、Spring MVC和MyBatis。这个项目包针对的是在实际开发中可能会遇到的一些常见问题,如中文乱码、二级缓存、JSON处理以及事务管理。以下是这些知识点的详细...
总结,Spring MVC通过`@ResponseBody`注解和指定`produces`属性可以方便地返回XML和JSON格式的数据。返回XML时需要关注字符编码,返回JSON时则可以直接返回对象。避免一些错误尝试,如直接返回XML字符串或未序列化的...
在本主题中,我们将深入探讨如何使用Flex进行文件上传和下载,并解决过程中可能出现的中文乱码问题。 一、Flex文件上传 1. Flex组件:Flex中可以使用`FileReference`组件来实现文件上传。用户通过选择文件后,`...
这是因为Spring MVC默认使用ISO-8859-1字符集,而中文字符不在这个字符集中。 在处理字符编码问题时,有几种常见的解决方案: 1. **不使用`@ResponseBody`注解**: 当不使用`@ResponseBody`时,你可以直接操作`...
通过以上两种方案,我们可以有效地解决Spring MVC框架下异步请求时出现的乱码问题。方案一相对简单,适用于简单的编码更改需求;方案二则更为灵活,可以根据实际项目需求自定义转换器,从而更好地控制编码格式。无论...
Spring MVC提供了多种方式来解决这个问题: - **请求乱码**:可以使用`HttpServletRequest`的`setCharacterEncoding()`方法设置请求编码。在Spring MVC中,通常通过实现`Filter`接口并注册到DispatcherServlet,...
以下将详细介绍四种解决Spring MVC中处理Ajax请求时中文乱码的方法。 ### 方法一:在@RequestMapping注解中指定字符集 在控制器的方法上添加`@RequestMapping`注解,并明确指定`produces`属性为`"text/html;...
处理中文乱码问题,可以设置HttpServletRequest的编码方式,对于POST请求,可以在过滤器中设置request.setCharacterEncoding("UTF-8");GET请求一般默认处理正确,但如果URL编码了,也需要解码。 Spring MVC的异常...