在开发过程中难免会遇到异步请求比如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;
}
}
测试