Ajax响应中文乱码 [Spring3MVC使用@ResponseBody处理Ajax请求]

2 篇文章 0 订阅
2 篇文章 0 订阅
Spring3.0 MVC @ResponseBody作用:把返回值直接写到HTTP response body里。

Spring3MVC在处理@ResponseBody这个annotation的时候,

org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter使用了

org.springframework.http.converter.StringHttpMessageConverter进行处理,而

org.springframework.http.converter.StringHttpMessageConverter的默认编码是

ISO-8859-1,因此会中文乱码。

解决办法:

(一) 在spring mvc的配置文件中手工配置bean:

<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>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />

通过配置AnnotationMethodHandlerAdapter类messageConverters属性来指定编码。

需要去掉<mvc:annotation-driven />,把bean部分加入到<context:component-scan base-package="控制包名" />前面

(二)在@ResponseBody的方法中设置response的ContentType

@ResponseBody
@RequestMapping(value = "xxx",method = RequestMethod.GET)
public String method(HttpServletRequest request,
HttpServletResponse response){
.....
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print(你的json.toString());
return null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值