Spring 3.1 MVC入门(三):ajax及中文乱码
简单的普通AJAX请求
SpringMVC中使用Ajax非常简单,只需要在相应的方法上添加上@ResponseBody即可。
如下:
@RequestMapping(value="verify",method=RequestMethod.GET) public @ResponseBody String userVerify(@RequestParam String userName){ if ("admin".equals(userName)) { return "error"; }else { return "success"; } }
这段代码中的@ResponseBody,即是告诉SpringMVC框架,这个是一个AJAX的请求,返回的内容是的字符串。@ResponseBody可以回public后面,或者是public的上面,和@requestMapping平级。
Spring AJAX返回的中文乱码
在SpringMVC中默认返回编码是使用的ISO-8859-1,这种情况下会导致返回的中文乱码。如下面的代码,则返回的信息为几个问号的乱码。
@RequestMapping(value = "/api/CloudService/addFileIndex", method = RequestMethod.GET) public @ResponseBody String apiExplain(){ return "请使用Post方式访问此接口!"; }
在网上搜索Spring ajax中文乱码,发现大部分的解决方法要么是覆盖Spring的StringHttpMessageConverter类,要么是在mvc的配置xml里面添加一个bean信息,但是发现这些方法在我的环境(Spring 3.1.3)里面并不起作用,而且看着也不方便。通过检索发现可以在上面添加一个简单的信息来实现编码方式的确定。
@RequestMapping(value = "/api/CloudService/addFileIndex", method = RequestMethod.GET,produces= "text/plain;charset=UTF-8")
使用produces,这种方法可以让返回的中文不再是乱码,个人感觉看着也更舒服。