1.就直接的Ajax处理
只要在Controller的方法里面,直接使用response输出你要返回的的Ajax数据,然后return null就可以了。
@RequestMapping(value = "/hello")
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response)throws IOException {
response.setCharacterEncoding("utf-8");
response.getWriter().println("{uuid:'"+request.getParameter("uuid")+"',name:'"+request.getParameter("name")+"'}");
return null;
}
2.数据绑定@RequestBody和@ResponseBody
@RequestBody功能:用于将HttpServletRequest的getInputStream()内容绑定到入参。@ResponseBody功能:用于将ResponseBody方法的返回值作为响应体。他们都只能访问报文体,不能访问报文头。@ResponseBody会把这个对象自动变成json格式的,再传回客户端,非常方便。当然,@ResponseBody也支持集合对象自动变成json格式。
@RequestMapping(value = "/hello")
@ResponseBody
public List<User> handleRequest(@RequestBody String reqBody) {
System.out.println("the reqBody="+reqBody);
List<User> list = new ArrayList<User>();
User user= new User();
user.setUuid("22");
user.setName("222");
list.add(user);
return list;
}
使用HttpEntity/ResponseEntity不但能访问到报文体,还可以访问报文头.
@RequestMapping(value = "/hello")
public ResponseEntity<List<User>> handleRequest(HttpEntity<String> req) {
System.out.println("req headers="+req.getHeaders()+", reqBody="+req.getBody());
List<User> list = new ArrayList<User>();
User user = new User();
user.setUuid("22");
user.setName("222");
list.add(user);
ResponseEntity<List<User>> ret = new ResponseEntity<List<User>>(list,HttpStatus.OK);
return ret;
}