读书人

Ajax响应中文乱码 [Spring3MVC施用@Re

发布时间: 2012-09-18 16:21:42 作者: rapoo

Ajax响应中文乱码 [Spring3MVC使用@ResponseBody处理Ajax请求]
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  >      <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 />

通过配置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;}        


读书人网 >Ajax

热点推荐