`

解决spring-mvc @responseBody注解返回json 乱码问题

阅读更多

 

在使用spring-mvc的mvc的时候既享受它带来的 便捷,又头痛它的一些问题,比如经典的中文乱码问题。现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会因为我们的各种疏忽从而造成页面ajax请求到的相应数据,如果带有中文常常是以 “????”显示,让人很恼火。在网上搜索后有很多解决的方案,方案都说中文乱码问题牵扯到springmvc的 StringHttpMessageConverter类,给出的答案都是自己去写个类继承它,然后用一堆眼花缭乱的配置去在beans.xml中去配 置,而且还必须要配置在<mvc:annotation-driven/>标签之前,否则。。。。

    我也出现了json中文乱码问题,搜出了一大堆方案后大喜,一个接一个的去测试。结果很失望:居然没一个能够解决我的问题!这不奇怪么,而且那么繁琐的过程让人望而生畏,又去是读源码又是覆盖方法什么,都说原因之所在于:

[java] 
  1. ......    
  2. public class StringHttpMessageConverter extends AbstractHttpMessageConverter<String> {    
  3.     
  4.     public static final Charset DEFAULT_CHARSET = Charset.forName("ISO-8859-1");    
  5. ......    

我认为这的确是主要原因,然后那么一大堆的代码和配置,我看的眼花缭乱。我在想,是否有简便的方法呢?还真让我找出来2个简便的方法:

1.在action中取得response,由他写入响应数据。

  1. response.setHeader("Cache-Control""no-cache");   
  2.         response.setContentType("text/json;charset=UTF-8");  
  3.         response.setCharacterEncoding("UTF-8");  
  4. PrintWriter out = response.getWriter();  
  5.             out.write(result);  

2.在aciton的需要返回json的方法的@requestmaping中写入

  1. @ResponseBody  
  2.     @RequestMapping(value="/list"produces = "text/html;charset=UTF-8")  
  3.     public String getBookList(HttpServletResponse response){String result = bookService.bookListFromJson();return result;  
  4.     }  


如此居然也完美的解决了我的问题,而且还不用去覆盖源码中的方法,还省去了大堆的配置,不亦乐乎?
不过我看的解决方案中我认为写的最详细最好的还是这位哥们的文章:点击打开链接
我按照他的解决方案没有解决我的问题,不过还是有启发的。

本文来源于:http://my.oschina.net/u/140421/blog/176625

分享到:
评论

相关推荐

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

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

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

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

    Spring MVC面试宝典1.pdf

    在控制器中,可以使用@ResponseBody注解返回JSON数据给前端。 ##### 3.4 如何解决POST请求中文乱码问题,GET的又如何处理呢? - **POST请求**:在web.xml中配置过滤器CharacterEncodingFilter来设置字符编码。 - **...

    jackon 2.9.1

    总结来说,Jackson 2.9.1是一个用于处理JSON的Java库,常与Spring MVC结合使用,通过`@ResponseBody`注解实现将Java对象直接转换为JSON并返回给客户端。在实际应用中,需要注意依赖包的正确引入,以及处理字符集以...

    Spring MVC面试题(2022最新版)

    **@ResponseBody注解的作用**:用于将控制器的方法返回对象转化为响应体返回给前端。 **@PathVariable和@RequestParam的区别**: - `@PathVariable`用于获取URL路径中的变量值。 - `@RequestParam`用于获取URL查询...

    SpringMVC面试题(2024最新版).docx

    Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、模块化的Web应用程序。它遵循Model-View-Controller(MVC)设计模式,有效地将业务逻辑、数据和用户界面分离,提高了开发效率和代码的可测试性。 Spring...

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

    在Controller方法中,可以使用`@ResponseBody`注解将返回值直接转化为JSON响应。 根据提供的文件名,`test.sql`可能包含一些测试用的SQL脚本,用于初始化数据库。`.png`文件可能是流程图或配置示意图,帮助理解配置...

    spring mvc 自學筆記

    这里提到的“验证单例多用构造方法”可能是指 Spring MVC 中单例 Bean 的生命周期问题。Spring 管理的 Bean 默认是单例模式,即在整个应用中只有一个实例。当 Bean 采用构造方法初始化时,无论多少次请求,构造函数...

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

    Spring MVC 是一个基于Java的轻量级Web框架,遵循MVC设计模式,旨在将Web层的各个组件职责明确,简化开发。它主要包括前端控制器DispatcherServlet、处理器映射器HandlerMapping、处理器适配器HandlerAdapter、...

    Java Web项目中Spring框架处理JSON格式数据的方法

    当Spring MVC检测到方法上标注了@ResponseBody注解时,就会将方法的返回值直接写入HTTP响应体中,而无需再通过传统的response对象来设置响应内容。 为了在Spring MVC中返回JSON格式的数据,通常会使用一些流行的...

    用ajax传递json到前台中文出现问号乱码问题的解决办法

    具体问题出现在使用了SpringMVC框架的开发场景中,在Controller层使用了@ResponseBody注解来直接返回JSON数据。该注解使得Spring MVC框架会将返回的对象自动转换为JSON格式的字符串。然而,默认情况下,Spring框架...

    解决SpringMvc后台接收json数据中文乱码问题的几种方法

    本文将深入探讨两种解决SpringMvc后台接收JSON数据中文乱码问题的方法。 1. **使用Ajax传输数据** 当前端通过Ajax使用JSON格式向SpringMvc后台发送数据时,可能出现中文乱码。这通常是因为服务器默认的字符编码不...

    SpringMVC【入门】篇

    3. 文件上传:SpringMVC 支持传统方式和跨服务器方式的文件上传,需要配置 Filter 解决中文乱码问题,并考虑 Tomcat 对某些操作的限制。 4. 异常处理:通过 @ExceptionHandler 注解定义全局异常处理器,实现统一的...

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

    除了上述的字符编码解决策略,Spring MVC还提供了多种参数绑定注解来处理请求中的不同数据类型: - **`@RequestParam`**:用于绑定HTTP请求参数,适用于GET和POST请求。例如,`@RequestParam("name") String name`...

    SpringMVC面试题.pdf

    - 在控制器方法上添加`@ResponseBody`注解,表明返回的是JSON数据。 - 在Ajax请求中,设置请求类型为GET或POST,指定请求URL,然后在成功回调中处理响应的JSON数据。 7. **处理乱码问题**: - 对于请求参数的...

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

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

    基于java反射机制的山寨版WEB2

    Spring MVC提供了`@RequestBody`和`@ResponseBody`注解,可以方便地将HTTP请求体解析为Java对象,或将处理结果转化为JSON返回给客户端。 为了实现这些功能,开发者可能使用了Spring Boot框架,它简化了Spring应用的...

    Springmvc完成ajax功能实例详解

    由于有`@ResponseBody`注解,Spring MVC会自动将返回的字符串转换成JSON格式。 如果你需要返回一个Java对象,比如`User`,只需改变方法的返回类型: ```java @RequestMapping("Ajax2") @ResponseBody public User ...

    SSM集成应用

    - **中文乱码问题**:解决客户端与服务器间字符集不一致导致的问题。 - **自定义参数绑定实现日期转换**:通过自定义Converter或Formatter实现复杂类型的转换。 #### SSM集成 **4.1 整合分析** SSM框架整合主要...

Global site tag (gtag.js) - Google Analytics