Java -- SpringMVC学习笔记4、返回对象Object
1、对象Object
处理器方法也可以返回Object对象。这个Object可以是 Integer,String,自定义对象,Map,List 等。但返回的对象不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的。
返回对象,需要使用@ResponseBody注解,将转换后的JSON数据放入到响应体中。
2、环境搭建
- 添加依赖:
<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>
- 声明注解驱动
将Object数据转化为JSON数据,需要由消息转换器 HttpMessageConverter完成。而转换器的开启,需要由mvc:annotation-driven/来完成。SpringMVC使用消息转换器实现请求数据和对象,处理器方法返回对象和响应输出之间的自动转换。
2.1、返回自定义类型对象
返回自定义类型对象时,不能以对象的形式直接返回给客户端浏览器,而是将对象转换为JSON格式的数据发送给浏览器的。
- 定义实体类:
public class Student
{
private String name;
private int age;
//getter and setter toString....
}
- 定义test.jsp页面、引入jQuery、异步请求处理器:
<head>
<title>Title</title>
<script src="js/jquery-3.4.1.min.js"></script>
<script>
$(document).ready(function () {
$.ajax({
url: "myajax.do",
type: "post",
dataType: "json",
success: function (data) {
alert(data.name + " " + data.age);
}
})
})
</script>
</head>
<body>
</body>
</html>
- 处理器方法:
@ResponseBody
@RequestMapping(value = "/myajax.do")
public Student getStudent()
{
Student student = new Student();
student.setName("张三");
student.setAge(15);
return student;
}
- 在spring配置文件中声明注解驱动:
<!--声明注解驱动-->
<mvc:annotation-driven/>
- 这样、当访问test.jsp资源时、就会弹出用户信息。
2.2、返回List集合
1、 修改处理器方法:
@ResponseBody
@RequestMapping(value = "/myajax.do")
public List<Student> getStudents()
{
List<Student> stuList = new ArrayList<>();
stuList.add(new Student("张三", 18));
stuList.add(new Student("李四", 17));
return stuList;
}
2、在test.jsp循环输出:
<script>
$(document).ready(function () {
$.ajax({
url: "myajax.do",
type: "post",
dataType: "json",
success: function (data) {
$.each(data, function (i, n) {
alert(n.name + " " + n.age);
})
}
})
})
</script>
2.2、返回字符串对象
若要返回非中文字符串,将前面返回数值型数据的返回值直接修改为字符串即可。但若返回的字符串中带有中文字符、则接收方页面 将会出现乱码 。此时需要使用@RequestMapping的produces性指定字符集。
1、修改处理器方法:
@ResponseBody
@RequestMapping(value = "/myajax.do", produces = "text/plain;charset=utf-8")
public String getStudents()
{
return "哈哈啥";
}
2、在test.jsp输出:
<script>
$(document).ready(function () {
$.ajax({
url: "myajax.do",
type: "post",
success: function (data) {
alert(data);
}
})
})
</script>