前言:
這部分需要額外導入jackson-databind
,jackson-core
,jackson-annotations
這三個包。
主要使用的註解是@RequestBody
和@ResponseBody
這兩個註解。@RequestBody
註解默認接收JSON字符串,springmvc會調用相應的轉換器將封裝到指定的對象中,然後綁定到controller方法的參數上。加上@ResponseBody
註解後,方法所返回的對象不會再被視圖解析器處理,而是被轉換成json數據寫入到response的body當中。
示例:
pom.xml
加入依賴
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.1</version>
</dependency>
JS代碼:
$.ajax({
type:"POST",//必須爲POST,POST方法纔會有請求體
url:"user/ajaxTest",
//必須告知springmvc請求體中的數據爲JSON字符串,不然無法轉換
contentType:"application/json;charset=UTF-8",
data:'{"username":"張三","password":"1234","age":22}',
dataType:"json",
success:function (data) {
alert(data.username);
alert(data.password);
alert(data.age);
}
});
Controller:
@RequestMapping("/ajaxTest")
@ResponseBody
public User testAjax(@RequestBody User user) {
user.setUsername("李四");
return user;
}
注:上述僅僅用於演示ajax請求發送json以及接收json的簡單操作。如果想要在controller方法的參數接收集合,數組等數據類型可以移步這篇博客。