SpringMVC响应JSON的数据格式
1、导入json的工具库的依赖,springmvc默认使用jackson
<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-databind</artifactId>
<version>2.9.0</version
</dependency>
2、在springmvc配置文件中加入注解驱动
<mvc:annotation-driven />
该驱动完成的功能是将java对象转换为json、xml、tex二进制等个数的数据转换。
<mvc:annotation-driven>在加入到springmvc配置文件会自动创建
HttpMessageConverter接口的8个实现类对象(不加只有四个),
包括MappingJackson2HttpMessageConverter
(使用jackson工具库中的ObjectMapper实现java对象转为json字符串)
3、创建一个接收json数据的ajax请求的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<script type="text/javascript" src="js/jquery-3.4.1.js"></script>
<script type="text/javascript">
$(function () {
$("button").click(function () {
//alert("121");
$.ajax({
url: "returnStudentJson.do",
data: {name: "zhangsan", age: 20},
type: "post",
dataType: "json",
success: function (resp) {
alert(resp.name + "," + resp.age);
}
})
})
})
</script>
</head>
<body>
<button id="btn">发起ajax请求</button>
</body>
</html>
4、在处理器上面加入@ResponseBody注解
@ResponseBody
@RequestMappi(value="/returnStudentJson.do")
public Student returnStudentJson(){
Student student=new Student();
student.setName("张三");
student.setAge(20);
return student;
}
该注解的作用是在把java对象转成json格式的数据后,通过HttpServletResponse输出到浏览器
返回对象框架的处理流程:
1、框架会把返回Student类型,调用框架的ArrayList中每个类的canWrite()方法,检查那个HttpMessageConverter接口的实现类能处理Student类型的数据–MappingJackson2HttpMessageConverte
2.框架会调用实现类的write(), MappingJackson2HttpMessageConverter的write()方 把张三的student对象转为json, 调用Jackson的ObjectMapper实现转为json
contentType: application/json;charset=utf-8
3.框架会调用@ResponseBody把2的结果数据输出到浏览器, ajax请求处理完成