springmvc的json數據交互
阿新 • • 發佈:2018-05-15
page ima str pro 請求 OS CA 轉換器 context
準備
@RequestBody
作用:
@RequestBody註解用於讀取http請求的內容(字符串),通過springmvc提供的HttpMessageConverter接口將讀到的內容(json數據)轉換為java對象並綁定到Controller方法的參數上。
@ResponseBody
作用:
@ResponseBody註解用於將Controller的方法返回的對象,通過springmvc提供的HttpMessageConverter接口轉換為指定格式的數據如:json,xml等,通過Response響應給客戶端
需求:通過jsp頁面請求json,相應json.
本例中:
@RequestBody註解實現接收http請求的json數據,將json數據轉換為java對象進行綁定。
@ResponseBody註解實現將Controller方法返回java對象轉換為json響應給客戶端。
實現步驟
1 加入jar包
2 準備一個jsp頁面
書寫一個jsp頁面,用於向服務器提交json數據
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>json數據交互</title> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <script type="text/javascript"> $(function(){ //alert(); //$.post(); //寫回的可以指定是json字符串,不能發送json字符串 var params =‘{"id": 1,"name": "測試商品","price": 99.9,"detail": "測試商品描述","pic": "123456.jpg"}‘; $.ajax({ url : "${pageContext.request.contextPath }/json.action", data : params, contentType : "application/json;charset=UTF-8", //發送數據的格式 type : "post", dataType : "json", //回調 success : function(data){ alert(data.name); } }); }); </script> </head> <body> <h1>這也頁面用於json數據交互的練習</h1> </body> </html>
3 JsonController編寫
package com.test.springmvc.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.test.springmvc.pojo.Items; @Controller public class JsonController { /* * json數據交互 */ @RequestMapping("/json.action") public @ResponseBody Items jsonTest(@RequestBody Items items){ System.out.println(items); return items; } }
4 Items類
package com.test.springmvc.pojo; import java.util.Date; public class Items { private Integer id; private String name; private Float price; private String pic; private Date createtime; private String detail; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public Float getPrice() { return price; } public void setPrice(Float price) { this.price = price; } public String getPic() { return pic; } public void setPic(String pic) { this.pic = pic == null ? null : pic.trim(); } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } public String getDetail() { return detail; } public void setDetail(String detail) { this.detail = detail == null ? null : detail.trim(); } }View Code
3 配置json轉換器
本例中並不需要配置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.MappingJacksonHttpMessageConverter"></bean> </list> </property> </bean>
springmvc的json數據交互