SpringMVC之ajax非同步互動

Stra星發表於2021-01-02

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;
}

相關文章