交互:兩個方向
- 前端到后臺:前端ajax發(fā)送json格式字符串喜庞,后臺直接接收為pojo參數(shù),使用注解 @RequstBody
- 后臺到前端:后臺直接返回pojo對象终娃,前端直接接收為json對象或者字符串味廊,使用注解 @ResponseBody
什么是 Json
Json是一種與語言無關(guān)的數(shù)據(jù)交互格式,就是一種字符串棠耕,只是用特殊符號 { } 內(nèi)表示對象余佛、[ ] 內(nèi)表示數(shù)組、" " 內(nèi)是屬性或值窍荧、:表示后者是前者的值
{"name": "Michael"} 可以理解為是一個包含name為Michael的對象
[{"name": "Michael"},{"name": "Jerry"}] 就表示包含兩個對象的數(shù)組
@ResponseBody注解
@responseBody注解的作用是將controller的方法返回的對象通過適當(dāng)?shù)霓D(zhuǎn)換器轉(zhuǎn)換為指定的格式之后辉巡,寫入到response對象的body區(qū),通常用來返回JSON數(shù)據(jù)或者是XML數(shù)據(jù)蕊退。 注意:在使用此注解之后不會再走視圖處理器郊楣,而是直接將數(shù)據(jù)寫入到輸入流中,他的效果等同于通過response對象輸出指定格式的數(shù)據(jù)瓤荔。
分析Spring MVC 使用 Json 交互
- pom.xml 需要引入的jar包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.0</version>
</dependency>
- spring-mvc.xml 添加靜態(tài)資源的處理
<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>
- index.jsp 中的代碼
<div>
<h2>Ajax json交互</h2>
<fieldset>
<input type="button" id="ajaxBtn" value="ajax提交"/>
</fieldset>
</div>
<script type="text/javascript" src="/js/jquery.min.js"></script>
<script>
$(function () {
$("#ajaxBtn").bind("click",function () {
// 發(fā)送ajax請求
$.ajax({
url: '/demo/handle07',
type: 'POST',
data: '{"id":"1","name":"李四"}',
contentType: 'application/json;charset=utf-8',
dataType: 'json',
success: function (data) {
alert(data.name);
}
})
})
})
</script>
- DemoController.java中的方法
@RequestMapping("/handle07")
// 添加@ResponseBody之后净蚤,不再走視圖解析器那個流程,而是等同于response直接輸出數(shù)據(jù)
// @ResponseBody
public @ResponseBody User handle07(@RequestBody User user) {
// 業(yè)務(wù)邏輯處理输硝,修改name為張三豐
user.setName("張三豐");
return user;
}