关闭

SpringMVC使用@ResponseBody处理Ajax请求

414人阅读 评论(0) 收藏 举报

Ajax响应[SpringMVC使用@ResponseBody处理Ajax请求]

Spring3.0 MVC @ResponseBody 的作用是把返回值直接写到HTTP response body里。

Spring使用AnnotationMethodHandlerAdapterhandleResponseBody方法,AnnotationMethodHandlerAdapter使用request header中"Accept"的值和messageConverter支持的MediaType进行匹配,然后会用"Accept"的第一个值写入response的"Content-Type"。一般的请求都是通过浏览器进行的,request header中"Accept"的值由浏览器生成。

有人跟踪@ResponseBody 的实现类发现其默认的编码是 iso-8859-1,

解决办法,在spring mvc的配置文件中手工配置bean:
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<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/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>

这样通过配置AnnotationMethodHandlerAdapter类messageConverters属性来指定编码。
记住,需要把bean部分加入到<context:component-scan base-package="com.zlscw.mvc" />前面,

这样就可以在jquery中直接调用而不出现乱码了。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1394次
    • 积分:62
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章存档