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

昨天在做项目的时候用@ResponseBody注解,发现返回页面上的中文是乱码,解决过程也是让我很郁闷!!!特此记录一些。目前有下面几种解决方案:

创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为华容企业提供专业的成都网站建设、网站建设,华容网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

@RequestMapping的produces方法

第一种解决方案是使用@RequestMapping注解的produces方法。写法如下:

复制代码 代码如下:

@RequestMapping(value = "testPersonalValidtor.do",produces = "application/json;charset=utf-8")  

在方法上加上这个注解就可以了。但是这样写的话有限制,只能在特定的方法上面使用。如果需要全局都使用的话,需要修改SpringMVC的配置文件。

使用messageConverters

第二种解决办法是使用HttpMessageConverter接口的相关实现类。我们先看配置文件中的配置信息。

 
  
   
    
    
     
      
      text/plain;charset=utf-8 
      text/html;charset=UTF-8 
      
     
    
   
  
 

并且需要在Maven依赖中配置上Jackjson的依赖。

 
 org.codehaus.jackson 
 jackson-mapper-asl 
 1.9.13 
 
 
 org.codehaus.jackson 
 jackson-core-asl 
 1.9.13 
 

昨天让我郁闷的是,我这样配置了之后确依然是不生效。后来才发现是位置放的不对,需要把这段配置放到的上面。真是很无语的感觉!!!

注意:一定要放到的上面,否则不会生效。

使用

还有一种方式是在SpringMVC的配置文件中的中加入的配置。具体配置内容如下:

 
 
  
   
   
    
     
     text/plain;charset=utf-8 
     text/html;charset=UTF-8 
     
    
   
  
 

注意:始用这种配置的时候,需要去掉RequestMappingHandlerMapping、RequestMappingHandlerAdapter或者DefaultAnnotationHandlerMapping、AnnotationMethodHandlerAdapter的Bean配置,要不然可能会不生效。

另外:对于请求映射处理类返回类型可以是String也可以是Object(如果Object是JavaBean的话,SpringMVC会用Jackson来转换成json字符串).例子如下:

@RequestMapping(value = "testPersonalValidtor.do") 
@ResponseBody 
//直接返回对象 
public Object testPersonalValidtor(@Valid PersonScope personScope, BindingResult bindingResult){ 
 if(bindingResult.hasErrors()){ 
  StringBuffer sb = new StringBuffer(); 
  for(ObjectError objectError : bindingResult.getAllErrors()){ 
   sb.append(((FieldError)objectError).getField() +" : ").append(objectError.getDefaultMessage()); 
  } 
  return sb.toString(); 
 }else{ 
  return personScope; 
 } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。


标题名称:SpringMVC中解决@ResponseBody注解返回中文乱码问题
URL链接:http://hbruida.cn/article/ihppcg.html