json數據交互
1.1 @RequestBody
作用:@RequestBody注解用于讀取http請求的內容(字符串),通過springmvc提供的HttpMessageConverter接口將讀到的內容轉換為json、xml等格式的數據并綁定到controller方法的參數上。
本例子應用:@RequestBody注解實現接收http請求的json數據,將json數據轉換為Java對象
1.2 @ResponseBody
作用:該注解用于將Controller的方法返回的對象,通過HttpMessageConverter接口轉換為指定格式的數據如:json,xml等,通過Response響應給客戶端
本例子應用:@ResponseBody注解實現將controller方法返回對象轉換為json響應給客戶端
1.3 請求json,響應json實現:
1.3.1 環境準備
Springmvc默認用MappingJacksonHttpMessageConverter對json數據進行轉換,需要加入jackson的包,如下:
1.3.2 配置json轉換器
在注解適配器中加入messageConverters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!--注解適配器 --> < 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.3.3 controller編寫
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 商品修改提交json信息,響應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 頁面js方法編寫:
引入 js:
1
2
|
<script type= "text/JavaScript" src= "${pageContext.request.contextPath }/js/jQuery-1.4.4.min.js" ></script> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
//請求json響應json function request_json(){ $.ajax({ type: "post" , url: "${pageContext.request.contextPath }/item/editItemSubmit_RequestJson.action" , contentType: "application/json;charset=utf-8" , data: '{"name":"測試商品","price":99.9}' , success: function (data){ alert(data); } }); } |
1.4 Form提交,響應json實現:
采用form提交是最常用的作法,通常有post和get兩種方法,響應json數據是為了方便客戶端處理,實現如下:
1.4.1 環境準備
同第一個例子
1.4.2 controller編寫
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// 商品修改提交,提交普通form表單數據,響應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 頁面js方法編寫:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
function formsubmit(){ var user = " name=測試商品&price=99.9" ; alert(user); $.ajax( { type: 'post' , //這里改為get也可以正常執行 url: '${pageContext.request.contextPath}/item/ editItemSubmit_RequestJson.action' , //ContentType沒指定將默認為:application/x-www-form-urlencoded data:user, success: function (data){ alert(data.name); } } ) } |
從上邊的js代碼看出,已去掉ContentType的定義,ContentType默認為:application/x-www-form-urlencoded格式。
1.4.4 jquery的form插件插件
針對上邊第二種方法,可以使用jquery的form插件提交form表單,實現ajax提交form表單,如下:
引用js:
1
2
3
4
|
<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方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function response_json() { //form對象 var formObj = $( "#itemForm" ); //執行ajax提交 formObj.ajaxSubmit({ dataType : "json" , //設置預期服務端返回json success : function (responseText) { alert(responseText); } }); } |
1.4.5 小結
實際開發中常用第二種方法,請求key/value數據,響應json結果,方便客戶端對結果進行解析。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/sihai12345/article/details/70254720