1. 程式人生 > >SpringMVC的json資料互動

SpringMVC的json資料互動

                                      SpringMVC的json資料互動

    1. @RequestBody

作用:

@RequestBody註解用於讀取http請求的內容(字串),通過springmvc提供的HttpMessageConverter介面將讀到的內容(json資料)轉換為java物件並繫結到Controller方法的引數上。

 

傳統的請求引數:

itemEdit.action?id=1&name=zhangsan&age=12

現在的請求引數:

使用POST請求,在請求體裡面加入json資料

{

"id": 1,

"name": "測試商品",

"price": 99.9,

"detail": "測試商品描述",

"pic": "123456.jpg"

}

 

本例子應用:

@RequestBody註解實現接收http請求的json資料,將json資料轉換為java物件進行繫結

    1. @ResponseBody

作用:

@ResponseBody註解用於將Controller的方法返回的物件,通過springmvc提供的HttpMessageConverter介面轉換為指定格式的資料如:json,xml等,通過Response響應給客戶端

 

本例子應用:

@ResponseBody註解實現將Controller方法返回java物件轉換為json響應給客戶端。

 

    1. 請求json,響應json實現:
      1. 加入jar包

如果需要springMVC支援json,必須加入json的處理jar

我們使用Jackson這個jar,如下圖:

      1. ItemController編寫
/**

 * 測試json的互動

 * @param item

 * @return

 */

@RequestMapping("testJson")

// @ResponseBody

public @ResponseBody Item testJson(@RequestBody Item item) {

    return item;

}
      1. 測試方法

在資料中找到js,拷貝到專案中

在itemEdit.jsp中新增測試方法:

<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script>

<script type="text/javascript">

$(function(){

       //alert(1);

       var params = '{"id": 1,"name": "測試商品","price": 99.9,"detail": "測試商品描述","pic": "123456.jpg"}';

 

//   $.post(url,params,function(data){

              //回撥

//   },"json");//

       $.ajax({

              url : "${pageContext.request.contextPath }/testJson.action",

              data : params,

              contentType : "application/json;charset=UTF-8",//傳送資料的格式

              type : "post",

              dataType : "json",//回撥

              success : function(data){

                     alert(data.name);

              }

             

       });

});

</script>

 

 

      1. 配置json轉換器

如果不使用註解驅動<mvc:annotation-driven />,就需要給處理器介面卡配置json轉換器,參考之前學習的自定義引數繫結。

 

在springmvc.xml配置檔案中,給處理器介面卡加入json轉換器:

<!--處理器介面卡 -->   (一般不用特意去加)

 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

      <property name="messageConverters">

      <list>

      <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>

      </list>

      </property>

   </bean>