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"
}
}