您好,登錄后才能下訂單哦!
json數(shù)據(jù)交互
1.1 @RequestBody
作用:@RequestBody注解用于讀取http請(qǐng)求的內(nèi)容(字符串),通過(guò)springmvc提供的HttpMessageConverter接口將讀到的內(nèi)容轉(zhuǎn)換為json、xml等格式的數(shù)據(jù)并綁定到controller方法的參數(shù)上。
本例子應(yīng)用:@RequestBody注解實(shí)現(xiàn)接收http請(qǐng)求的json數(shù)據(jù),將json數(shù)據(jù)轉(zhuǎn)換為Java對(duì)象
1.2 @ResponseBody
作用:該注解用于將Controller的方法返回的對(duì)象,通過(guò)HttpMessageConverter接口轉(zhuǎn)換為指定格式的數(shù)據(jù)如:json,xml等,通過(guò)Response響應(yīng)給客戶端
本例子應(yīng)用:@ResponseBody注解實(shí)現(xiàn)將controller方法返回對(duì)象轉(zhuǎn)換為json響應(yīng)給客戶端
1.3 請(qǐng)求json,響應(yīng)json實(shí)現(xiàn):
1.3.1 環(huán)境準(zhǔn)備
Springmvc默認(rèn)用MappingJacksonHttpMessageConverter對(duì)json數(shù)據(jù)進(jìn)行轉(zhuǎn)換,需要加入jackson的包,如下:
1.3.2 配置json轉(zhuǎn)換器
在注解適配器中加入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 /> 則不用定義上邊的內(nèi)容。
1.3.3 controller編寫(xiě)
// 商品修改提交json信息,響應(yīng)json信息 @RequestMapping("/editItemSubmit_RequestJson") public @ResponseBody Items editItemSubmit_RequestJson(@RequestBody Items items) throws Exception { System.out.println(items); //itemService.saveItem(items); return items; }
1.3.4 頁(yè)面js方法編寫(xiě):
引入 js:
<script type="text/JavaScript" src="${pageContext.request.contextPath }/js/jQuery-1.4.4.min.js"></script>
//請(qǐng)求json響應(yīng)json function request_json(){ $.ajax({ type:"post", url:"${pageContext.request.contextPath }/item/editItemSubmit_RequestJson.action", contentType:"application/json;charset=utf-8", data:'{"name":"測(cè)試商品","price":99.9}', success:function(data){ alert(data); } }); }
1.4 Form提交,響應(yīng)json實(shí)現(xiàn):
采用form提交是最常用的作法,通常有post和get兩種方法,響應(yīng)json數(shù)據(jù)是為了方便客戶端處理,實(shí)現(xiàn)如下:
1.4.1 環(huán)境準(zhǔn)備
同第一個(gè)例子
1.4.2 controller編寫(xiě)
// 商品修改提交,提交普通form表單數(shù)據(jù),響應(yīng)json @RequestMapping("/editItemSubmit_ResponseJson") public @ResponseBody Items editItemSubmit_ResponseJson(Items items) throws Exception { System.out.println(items); //itemService.saveItem(items); return items; }
1.4.3 頁(yè)面js方法編寫(xiě):
function formsubmit(){ var user = " name=測(cè)試商品&price=99.9"; alert(user); $.ajax( { type:'post',//這里改為get也可以正常執(zhí)行 url:'${pageContext.request.contextPath}/item/ editItemSubmit_RequestJson.action', //ContentType沒(méi)指定將默認(rèn)為:application/x-www-form-urlencoded data:user, success:function(data){ alert(data.name); } } ) }
從上邊的js代碼看出,已去掉ContentType的定義,ContentType默認(rèn)為:application/x-www-form-urlencoded格式。
1.4.4 jquery的form插件插件
針對(duì)上邊第二種方法,可以使用jquery的form插件提交form表單,實(shí)現(xiàn)ajax提交form表單,如下:
引用js:
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.form.min.js"></script>
js方法如下:
function response_json() { //form對(duì)象 var formObj = $("#itemForm"); //執(zhí)行ajax提交 formObj.ajaxSubmit({ dataType : "json",//設(shè)置預(yù)期服務(wù)端返回json success : function(responseText) { alert(responseText); } }); }
1.4.5 小結(jié)
實(shí)際開(kāi)發(fā)中常用第二種方法,請(qǐng)求key/value數(shù)據(jù),響應(yīng)json結(jié)果,方便客戶端對(duì)結(jié)果進(jìn)行解析。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。