SpringMVC之ajax異步互動
Springmvc預設用MappingJackson2HttpMessageConverter對json資料進行轉換,需要加入jackson的包;同時使用 <mvc:annotation-driven />
@RequestBody
該注解用于Controller的方法的形參聲明,當使用ajax送出并指定contentType為json形式時,通過HttpMessageConverter接口轉換為對應的POJO對象。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<script src="${pageContext.request.contextPath}/js/jquery-3.5.1.js"></script>
<%--ajax異步互動--%>
<button id="btn1">ajax異步送出</button>
<script>
$("#btn1").click(function () {
let url = '${pageContext.request.contextPath}/ajaxRequest';
let data = '[{"id":1,"username":"張三"},{"id":1,"username":"李四"}]';
$.ajax({
type:'POST',
url:url,
data:data,
contentType:'application/json;charset=utf-8',
success:function (resp) {
alert(JSON.stringify(resp));
}
})
})
</script>
@RequestMapping("/ajaxRequest")
public void ajaxRequest(@RequestBody List<User> list){
System.out.println(list);
}
<!--配置處理器映射器及處理器擴充卡-->
<!--此标簽進行了功能增強:支援json的讀寫-->
<mvc:annotation-driven></mvc:annotation-driven>
@ResponseBody
該注解用于将Controller的方法傳回的對象,通過HttpMessageConverter接口轉換為指定格式的資料如:json,xml等,通過Response響應給用戶端。
@RequestMapping("/ajaxRequest")
@ResponseBody
public List<User> ajaxRequest(@RequestBody List<User> list){
System.out.println(list);
return list;
}