json資料互動
springmvc 的json資料互動 - 哎幽的成長 - CSDN部落格--和老師講課相同
http://blog.csdn.net/u012373815/article/details/47208187
-----------------
1 json資料互動
為什麼要進行json資料互動
json資料格式在介面呼叫中、html頁面中較常用,json格式比較簡單,解析還比較方便。
比如:webservice介面,傳輸json資料.
springmvc進行json互動
1、請求的是json、輸出
2、請求的是key/value、輸出json。此方法比較常用。
1.1.1 @RequestBody
作用:
@RequestBody註解用於讀取http請求的內容(字串),通過springmvc提供的HttpMessageConverter介面將讀到的內容轉換為json、xml等格式的資料並繫結到controller方法的引數上。
本例子應用:
@RequestBody註解實現接收http請求的json資料,將json資料轉換為java
1.1.2 @ResponseBody
作用:
該註解用於將Controller的方法返回的物件,通過HttpMessageConverter介面轉換為指定格式的資料如:json,xml等,通過Response響應給客戶端
本例子應用:
@ResponseBody註解實現將controller方法返回物件轉換為json響應給客戶端
1.1.3 請求json,響應json實現:
1.1.3.1 環境準備
1.1.1 載入json轉的jar包
Springmvc預設用MappingJacksonHttpMessageConverter
springmvc中使用jackson的包進行json轉換(@requestBody和@responseBody使用下邊的包進行json轉),如下:
1.1.2 配置json轉換器
在註解介面卡中加入messageConverters
<!--註解介面卡 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> </list> </property> </bean>
注意:如果使用<mvc:annotation-driven /> 則不用定義上邊的內容。
1.4 json互動測試
1.4.1 輸入json串,輸出是json串
1.4.1.1 jsp頁面
<scripttype="text/JavaScript"
src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script>
要記得引用js
使用jquery的ajax提交json串,對輸出的json結果進行解析。 Ajax 關鍵詞 type 提交方法型別 ,url ,datatype 預期伺服器返回的資料型別,
contentType 傳送的資料的型別 , success 成功返回,
function requestJson() {
//請求JSON輸出json
$.ajax({
type:'post',
url:'${pageContext.request.contextPath}/requestJson.action',
contentType:'application/json;charset=utf-8',
data:'{"name":"手機","price":"999"}', //controller 的java程式碼中被轉換為itemsCustom物件
success:function (data){
alert(data);
}
});
}
1.4.1.2 controller
@Controller
public classJsonTest {
//請求json(商品資訊)輸出json(商品資訊)
//@RequestBody 將請求的商品資訊的json串轉成ItemsCustom物件
//@ResponseBody 將ItemsCustom轉換成json輸出
@RequestMapping("/requestJson")
public @ResponseBody ItemsCustomrequestJson(@RequestBodyItemsCustom itemsCustom){
//@ResponseBody 將ItemsCustom轉換成json輸出
return itemsCustom;
}
}
1.4.1.3 測試結果
1.4.2 輸入key/value,輸出是json串
1.4.2.1 jsp頁面
使用jquery的ajax提交key/value串,對輸出的json結果進行解析。
function responseJson() {
//請求key/value輸出json
$.ajax({
type:'post',
url:'${pageContext.request.contextPath}/responseJson.action',
//contentType:'application/json;charset=utf-8', 請求key/value預設是key/value 所以不用指定
data:'name=手機&price=999',
success : function(data){
alert(data);
}
});
}
1.4.2.2 controller
//請求key/value(商品資訊)輸出json(商品資訊)
@RequestMapping("/responseJson")
public @ResponseBody ItemsCustomresponseJson( ItemsCustom itemsCustom){ //這裡就可以自動轉換成itemsCustom 物件了嗎?
//@ResponseBody 將ItemsCustom轉換成json輸出
return itemsCustom;
}
1.4.2.3 測試
1.2.3 小結
實際開發中常用第二種方法,請求key/value資料,響應json結果,方便客戶端對結果進行解析。