springmvc 的json數據交互 - 哎幽的成長 - CSDN博客--和老師講課相同
http://blog.csdn.net/u012373815/article/details/47208187javascript
-----------------html
json數據格式在接口調用中、html頁面中較經常使用,json格式比較簡單,解析還比較方便。前端
好比:webservice接口,傳輸json數據.java
1、請求的是json、輸出json,要求請求的是json串,因此在前端頁面中須要將請求的內容轉成json,不太方便。jquery
2、請求的是key/value、輸出json。此方法比較經常使用。web
做用:ajax
@RequestBody註解用於讀取http請求的內容(字符串),經過springmvc提供的HttpMessageConverter接口將讀到的內容轉換爲json、xml等格式的數據並綁定到controller方法的參數上。spring
本例子應用:json
@RequestBody註解實現接收http請求的json數據,將json數據轉換爲java 對象服務器
做用:
該註解用於將Controller的方法返回的對象,經過HttpMessageConverter接口轉換爲指定格式的數據如:json,xml等,經過Response響應給客戶端
本例子應用:
@ResponseBody註解實現將controller方法返回對象轉換爲json響應給客戶端
Springmvc默認用MappingJacksonHttpMessageConverter對json數據進行轉換,須要加入jackson的包,以下:
springmvc中使用jackson的包進行json轉換(@requestBody和@responseBody使用下邊的包進行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 /> 則不用定義上邊的內容。
<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);
}
});
}
@Controller
public classJsonTest {
//請求json(商品信息)輸出json(商品信息)
//@RequestBody 將請求的商品信息的json串轉成ItemsCustom對象
//@ResponseBody 將ItemsCustom轉換成json輸出
@RequestMapping("/requestJson")
public @ResponseBody ItemsCustomrequestJson(@RequestBodyItemsCustom itemsCustom){
//@ResponseBody 將ItemsCustom轉換成json輸出
return itemsCustom;
}
}
使用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);
}
});
}
//請求key/value(商品信息)輸出json(商品信息)
@RequestMapping("/responseJson")
public @ResponseBody ItemsCustomresponseJson( ItemsCustom itemsCustom){ //這裏就能夠自動轉換成itemsCustom 對象了嗎?
//@ResponseBody 將ItemsCustom轉換成json輸出
return itemsCustom;
}
實際開發中經常使用第二種方法,請求key/value數據,響應json結果,方便客戶端對結果進行解析。
摘自傳智播客視頻