1.controller 层的handler 方法 return 对象。spring mvc 会负责将返回的对象转化成json串返回给调用者;
2.GET 请求是不能带request body 的。POST 请求可以。
例如 :
1. jsp 页面 发送ajax 请求,参数为json ,期望返回也为json (注意为Post 请求不是GET请求 )
<%@include file="/WEB-INF/common/taglibs.jsp"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script type="text/javascript" src='${ctx}/static/plugins/jquery-1.11.2.min.js'></script> <script type="text/javascript"> function savepro(){ var saveData = {"pid":"111","pname":"ddd"}; //发送给服务器的JSON $.ajax({ type : "POST", url : "/quck/products/update", data:JSON.stringify(saveData), contentType:"application/json", //发送至服务器的类型 dataType : "json", //预期服务器返回类型 success: function(data){ alert(data); } }) } </script> </head> <body> <div> <input type="button" value="保存" οnclick="savepro()"/> </div> </body>
2. controller 方法
@RequestMapping(value="/update",method=RequestMethod.POST) @ResponseBody // 这个注解说明返回的是一个对象,不需要当做jsp 处理。 //@RequestBody注解请求参数在请求体里 public Map<String,Object> update(@RequestBody Product product) throws Exception { Map<String,Object> map1 = new HashMap<String,Object>(); map1.put("status", 200); map1.put("data", product); map1.put("message", "success!"); return map1; }
3 Product 如下:
public class Product { private String pname; private String pid; public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } public String getPname() { return pname; } public void setPname(String pname) { this.pname = pname; } }
4. 返回:
{
"message": "success!",
"status": 200,
"data": {
"pname": "ddd",
"pid": "111"
}
}