json數據交互


springmvc 的json數據交互 - 哎幽的成長 - CSDN博客--和老師講課相同
http://blog.csdn.net/u012373815/article/details/47208187

-----------------

json數據交互

 為什么要進行json數據交互

json數據格式在接口調用中、html頁面中較常用,json格式比較簡單,解析還比較方便。

比如:webservice接口,傳輸json數據.

  springmvc進行json交互

    

 

1、請求的是json、輸出json,要求請求的是json串,所以在前端頁面中需要將請求的內容轉成json不太方便

2、請求的是key/value、輸出json。此方法比較常用。

 

1.1.1 @RequestBody

作用:

@RequestBody注解用於讀取http請求的內容(字符串),通過springmvc提供的HttpMessageConverter接口將讀到的內容轉換為jsonxml等格式的數據並綁定到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默認用MappingJacksonHttpMessageConverterjson數據進行轉換,需要加入jackson的包,如下:

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結果,方便客戶端對結果進行解析。

 

 

摘自傳智播客視頻

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM