springmvc - json的數據交互

1、爲何使用 jsonhtml

json 數據格式在接口調用中、html頁面中較經常使用,json數據結構簡單,解析方便。 好比,webservice接口,傳輸json數據。前端

2、springmvc 中進行json交互java

輸入圖片說明

1.請求的是json串、輸出json串,在前端須要將請求的內容轉換成json串,不太方便。
2.請求的是key/value、輸出json串,此方法較經常使用。jquery

3、.配置json轉換器web

注意:若是使用的是註解驅動標籤,則不須要手動配置:ajax

<mvc:annotation-driven conversion-service="conversionService" validator="validator"/>

不然,須要在註解適配器中加入messageConverters。spring

<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>

4、json交互測試json

jsonTest.jsp數據結構

<html>
<head>
    <title>json交互測試</title>
    <%-- 導入js外部文件 --%>
    <script language="JavaScript" src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script>
    <%-- 自定義js函數--%>
    <script language="JavaScript">
        function requestJson() {
            $.ajax({
                type: 'post',
                url: '${pageContext.request.contextPath}/requestJson.action',
                contentType: 'application/json;charset=utf-8',
                data: '{"name":"手機","price":999}',
                success: function (data) {
                    alert(data.name);
                }
            });
        }

        function responseJson() {
            $.ajax({
                type: 'post',
                url: '${pageContext.request.contextPath}/responseJson.action',
                data: 'name=手機&price=999',
                success: function (data) {
                    alert(data.name);
                }
            });
        }
    </script>
</head>
<body>
<input type="button" onclick="requestJson()" value="請求json,輸出json"/>
<input type="button" onclick="responseJson()" value="請求key/value,輸出json"/>
</body>
</html>

jsonTest.javamvc

@Controller
public class JsonTest {

    //第一個@ResponseBody,將頁面商品信息的json轉成itemsCustom對象
    //第二個@ResponseBody,把返回的itemsCustom對象轉成json串輸出。
    @RequestMapping("requestJson")
    public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom) {
        return itemsCustom;
    }

    //輸入是key/value ,輸出是 json數據
    @RequestMapping("responseJson")
    public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom) {
        return itemsCustom;
    }
}

區別

  1. application/x-www-form-urlencoded, 可選(即非必須,由於這種狀況的數據@RequestParam, @ModelAttribute也能夠處理,固然@RequestBody也能處理);
  2. multipart/form-data, 不能處理(即便用@RequestBody不能處理這種格式的數據);
  3. 其餘格式, 必須(其餘格式包括application/json, application/xml等。這些格式的數據,必須使用@RequestBody來處理);

**測試結果: **

1.使用jquery 的ajax 提交json串,對輸出的json結果進行解析。

json 請求參數:
json請求參數

json 響應參數:
json響應參數

2.使用jquery 的ajax 提交key/value 串,對輸出的json結果進行解析。

key/value 請求參數:
key/value 請求參數

json 響應參數:
json響應參數

相關文章
相關標籤/搜索