在開發過程中難免會遇到異步請求比如ajax那麼下面就是SpringMVC對ajax請求的處理
聲明:下面的所有的操作都是基於SpringMVC環境配置下操作的
1.首先要在pom.xml文件中添加Json與Bean對象互轉的依賴
<!--json與javaBean互轉的依賴-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
2.因爲接下來我們要使用ajax異步請求所以要在webapp文件夾下新建一個js文件夾存放jquery文件並在springmvc.xml文件中配置如下
<!--讓前端控制器不攔截某些靜態資源-->
<mvc:resources location="/js/" mapping="/js/**"/>
當然我們也可以使用鏈接獲取jquery文件,這種方式要有網絡的情況下才適用
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
3.測試
測試方法:新建一個按鈕綁定單擊事件,然後再單擊事件向後端發送ajax請求,在後端將name值改變然後響應給前端,最後將後端返回的name值彈出到屏幕上
1.我的測試javabean:有以下字段併爲其配上toString方法 get方法set方法有參數構造和無參構造
2.前端代碼實現:
其中 data中的值要與實體類也就是javabean對象得屬性相對應
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<script src="js/jquery.min.js"></script>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
<script>
$(function () {
$("#btn01").click(function () {
$.ajax({
url:"getAjax",
contentType:"application/json;charset=utf-8",
type:"post",
dataType:"json",
data:'{"name":"msg","pwd":"123","sex":"msg","age":"123"}',
success:function (data) {
alert(data.name);
}
})
});
})
</script>
<body>
<h1>測試</h1>
<button id="btn01">ajax訪問</button>
</body>
</html>
5.Controller中接收請求
@RequestBody:是用來獲取請求體,並將請求體封裝到User實體中前提時提交的數據一定要與實體中的屬性相對應
@ResponseBody:先將返回值轉化爲json字符串然後響應給前端
package cn.msg.controller;
import cn.msg.bean.User;
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;
@Controller
public class UserController {
/**
* 吃了空構造的虧,寫了有參構造一定要寫空構造,不
* 然此處無法將傳來json字符串轉化爲javabean
* @param user
* @return
*/
@RequestMapping("/getAjax")
public @ResponseBody User getAjax(@RequestBody User user) {
System.out.println("getAjax已執行");
System.out.println(user.toString());
user.setName("我是姓名");
return user;
}
}
測試