70.SpringMVC怎么和AJAX相互调用的?
Spring MVC可以通过控制器处理AJAX请求,并返回JSON格式的响应。以下是一个简单的例子:
- 添加Jackson库到你的项目中,以便将Java对象转换成JSON。
<!-- 添加Jackson的依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>
- 在Spring MVC控制器中添加一个处理AJAX请求的方法,并使用
@ResponseBody
注解来自动将Java对象转换成JSON。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class AjaxController {
@RequestMapping("/ajaxCall")
@ResponseBody
public MyObject ajaxCall() {
// 处理请求,创建响应对象
MyObject response = new MyObject();
response.setProperty("value");
// 返回的对象将自动转换成JSON
return response;
}
}
class MyObject {
private String property;
// getter和setter方法
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
}
- 在前端,使用JavaScript中的
XMLHttpRequest
对象或者现代的fetch
API来发起AJAX请求,并处理响应。
<script type="text/javascript">
// 使用原生的XMLHttpRequest对象发起请求
var xhr = new XMLHttpRequest();
xhr.open("GET", "/ajaxCall", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var response = JSON.parse(xhr.responseText);
// 处理响应数据
console.log(response.property);
}
};
xhr.send();
// 或者使用现代的fetch API
fetch('/ajaxCall')
.then(response => response.json())
.then(data => {
// 处理响应数据
console.log(data.property);
});
</script>
当AJAX请求发送到/ajaxCall
时,Spring MVC控制器方法将处理请求,创建响应对象,并自动将其转换为JSON,因为我们使用了@ResponseBody
注解。前端JavaScript接收到JSON响应,并可以进一步处理这个数据。
评论已关闭