昨天看了不少的帖子,都没有解决StringHttpMessageConverter问题,今天在http://stackoverflow.com上面看到个帖子,希望对大家有用。关于这个问题造成的原因我就不解释了,相信大家也看了超多的帖子了。
我用的版本是spring mvc3.1.3
我个人觉得这个帖子还比较实用。给大家分享下
http://stackoverflow.com/questions/3616359/who-sets-response-content-type-in-spring-mvc-responsebody/7772620#7772620
很多的帖子都是说重写StringHttpMessageConverter,我得强调下:
However, using this method you have to redefine all HttpMessageConverter
s, and also it doesn't work with <mvc:annotation-driven />
.
然而,用这个方法你不得不重新定义HttpMessageConverter
s,并且 他不得和<mvc:annotation-driven />
.这个标签一起工作。
既然不能工作,我们怎么办呢?
这里有一篇文章,我也就大概看了下,具体里面有没有错,我也没仔细看,没去验证,大家可以借鉴下。
http://www.mspring.org/post/2012/7/14/1344938579544.html
另外stackoverflow.com上面提供了令外一种最方便却丑陋的(非常规)的方法 ,拦截theAnnotationMethodHandlerAdapter
的实例化
public class EncodingPostProcessor implements BeanPostProcessor { public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException { if (bean instanceof AnnotationMethodHandlerAdapter) { HttpMessageConverter<?>[] convs = ((AnnotationMethodHandlerAdapter) bean).getMessageConverters(); for (HttpMessageConverter<?> conv: convs) { if (conv instanceof StringHttpMessageConverter) { ((StringHttpMessageConverter) conv).setSupportedMediaTypes( Arrays.asList(new MediaType("text", "html", Charset.forName("UTF-8")))); } } } return bean; } public Object postProcessAfterInitialization(Object bean, String name) throws BeansException { return bean; } } - <bean class = "EncodingPostProcessor " />
最后我没有重写HttpMessageConverter
s,配置了原有的HttpMessageConverter
s(value = "text/plain;charset=UTF-8")不知道是不是符合你们的情况,但是解决了我的乱码问题。
我的配置是 (删除了 mvc:annotation-driven )
<!-- mvc:annotation-driven -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<!--启动Spring MVC的注解功能,设置编码方式,防止乱码 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<!-- 把ByteArray加在Json前面 -->
<bean
class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!--有下载功能-->
<bean
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class = "org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value = "text/plain;charset=UTF-8" />
</bean>
</list>
</property>
</bean>
自己很懒的,就这样吧,有问题可以再讨论。
如果发现真的是误认子弟,切记提醒我删除。
相关推荐
在 Spring MVC 中,数据跳转主要指的是控制器(Controller)处理完请求后,将数据转发到视图(View)进行展示的过程。这里的“跳转”实际上是指请求处理后的视图重定向或转发。 #### 转发与重定向 - **转发(forward)**...
在 Web 开发中,参数传递中文乱码问题是一个常见的问题,特别是在使用 Spring MVC 框架时。这篇文章将详细介绍 Spring MVC 参数传递中文乱码解决方法,并提供了多种解决方案。 一、GET 方式中文乱码解决方案 在 ...
如何解决POST请求中文乱码问题,GET的又如何处理呢? - 对于POST请求,可以在web.xml中配置字符编码过滤器,确保所有请求都使用统一的字符编码: ```xml <filter-name>characterEncodingFilter <filter-class>...
本文将详细介绍如何解决Ajax请求中出现的中文乱码问题。 首先,我们需要理解Ajax请求的基本原理。Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下,与服务器交换数据并更新部分网页的技术...
这四种方法都可以有效地解决Spring MVC在处理Ajax请求时的中文乱码问题。选择哪种方法取决于项目的具体情况和团队的开发习惯。通常情况下,推荐使用方法三或方法四,因为它们不需要修改Spring的原始库,同时能够确保...
##### 3.4 如何解决POST请求中文乱码问题,GET的又如何处理呢? - **POST请求**:在web.xml中配置过滤器CharacterEncodingFilter来设置字符编码。 - **GET请求**:同样可以通过配置过滤器解决,也可以通过修改Tomcat...
然而,在处理中文字符时,可能会遇到乱码问题,这主要体现在请求参数、响应内容或者静态资源显示上。解决这个问题通常涉及到编码设置的调整,下面将详细介绍两种方法来解决Struts中的中文乱码问题。 **方法一:配置...
### Ajax乱码解决方案 在进行Ajax开发的过程中,经常会遇到数据编码问题导致的乱码现象。这类问题虽然看似简单,但若处理不当,则可能耗费大量时间进行调试与解决。本文将结合一个具体的案例来探讨如何有效地解决...
Spring MVC的REST支持使得URI请求具有REST风格,与AJAX的HTTP接口获取资源的需求相吻合,能更好地发挥REST的优势。 实现AJAX访问Spring REST服务的过程如下: 1. **客户端**:客户端使用XMLHttpRequest对象发送...
在使用Spring MVC框架进行Web应用开发时,经常会遇到一个常见的问题——异步请求(尤其是AJAX请求)返回的数据出现乱码现象。这个问题通常发生在Spring MVC默认的编码方式与客户端或服务器端期望的编码不一致时。...
在开发Web应用时,我们经常会遇到Ajax请求返回的数据(通常是`responseText`)出现乱码的问题,这可能会导致前端展示的信息无法正确理解。虽然JavaScript和IDE(如MyEclipse)的编码设置一致,但这并不意味着在Ajax...
Spring MVC 是一个强大的Java ...以上是对Spring MVC面试中常见的一些知识点的详细解答,这些内容涵盖了Spring MVC的基本概念、工作流程、核心组件、与其他框架的区别以及与AJAX的交互等方面,有助于理解和准备面试。
项目介绍 这是一个 springmvc + ...也配置了转成json解决乱码的问题 <!-- 1、支持HandlerMapper和HandlerAdapter --> <mvc> <!-- 转成json 为UTF-8 --> <mvc:message-converters register-default
在本文中,我们将深入探讨如何解决Ajax加载JSON数据时出现的中文乱码问题。这个问题通常发生在前后端交互过程中,特别是当使用zTree等组件进行异步数据加载时。本文将通过一个具体的例子来阐述问题所在,并提供解决...
**假设场景**:一个简单的Java Web应用,使用Spring MVC框架,前端使用jQuery发起Ajax请求获取包含中文的JSON数据。 **步骤**: 1. **配置前端页面**: ```html <!DOCTYPE html> ...
这样,无论是在AJAX请求中,还是在服务器响应中,只要双方对于字符编码的处理保持一致,即可避免乱码问题。 在实际开发中,除了显式设置@RequestMapping注解的produces属性外,还可以在全局的web.xml中配置字符编码...
2. 文件编码:确保正确处理不同编码的文件名,避免乱码问题。 3. 断点续传:对于大文件,可以考虑实现断点续传功能,提高用户体验。 4. 性能优化:考虑使用缓存、CDN等技术提升下载速度。 在实际项目中,文件上传和...
在上述问题中,当使用Ajax请求Spring MVC后台并从MySQL数据库查询数据时,页面显示中文出现了乱码。这通常涉及到多个环节的字符编码设置,包括前端、后端和数据库。 1. **前端响应头设置**: 在Ajax请求中,响应头...
Spring MVC提供了一种简单的方式来处理AJAX请求,让我们一步步来看如何实现。 首先,为了将Java对象转换为JSON格式,我们需要引入Jackson库的jar包。Jackson是Java中广泛使用的JSON处理库,它允许我们将Java对象...