SpringMVC的json資料互動
SpringMVC的json資料互動
-
- @RequestBody
作用:
@RequestBody註解用於讀取http請求的內容(字串),通過springmvc提供的HttpMessageConverter介面將讀到的內容(json資料)轉換為java物件並繫結到Controller方法的引數上。
傳統的請求引數:
itemEdit.action?id=1&name=zhangsan&age=12
現在的請求引數:
使用POST請求,在請求體裡面加入json資料
{
"id": 1,
"name": "測試商品",
"price": 99.9,
"detail": "測試商品描述",
"pic": "123456.jpg"
}
本例子應用:
@RequestBody註解實現接收http請求的json資料,將json資料轉換為java物件進行繫結
-
- @ResponseBody
作用:
@ResponseBody註解用於將Controller的方法返回的物件,通過springmvc提供的HttpMessageConverter介面轉換為指定格式的資料如:json,xml等,通過Response響應給客戶端
本例子應用:
@ResponseBody註解實現將Controller方法返回java物件轉換為json響應給客戶端。
-
- 請求json,響應json實現:
- 加入jar包
- 請求json,響應json實現:
如果需要springMVC支援json,必須加入json的處理jar
我們使用Jackson這個jar,如下圖:
-
-
- ItemController編寫
-
/**
* 測試json的互動
* @param item
* @return
*/
@RequestMapping("testJson")
// @ResponseBody
public @ResponseBody Item testJson(@RequestBody Item item) {
return item;
}
-
-
- 測試方法
-
在資料中找到js,拷貝到專案中
在itemEdit.jsp中新增測試方法:
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <script type="text/javascript"> $(function(){ //alert(1); var params = '{"id": 1,"name": "測試商品","price": 99.9,"detail": "測試商品描述","pic": "123456.jpg"}';
// $.post(url,params,function(data){ //回撥 // },"json");// $.ajax({ url : "${pageContext.request.contextPath }/testJson.action", data : params, contentType : "application/json;charset=UTF-8",//傳送資料的格式 type : "post", dataType : "json",//回撥 success : function(data){ alert(data.name); }
}); }); </script> |
-
-
- 配置json轉換器
-
如果不使用註解驅動<mvc:annotation-driven />,就需要給處理器介面卡配置json轉換器,參考之前學習的自定義引數繫結。
在springmvc.xml配置檔案中,給處理器介面卡加入json轉換器:
<!--處理器介面卡 --> (一般不用特意去加)
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</list>
</property>
</bean>