SpringMVC处理器类的方法可以返回ModelAndView、void、Object和String,今天我们来说一说返回String的情况。
返回值为String的第一种情况,就是返回视图的逻辑名,此时SpringMVC会通过视图解析器对视图逻辑名进行处理,拼接上前缀和后缀,从而可以返回正确的视图文件的完整逻辑名。
返回值为String的第二种情况,就是返回的是json格式的字符串,看下面的示例。
1、在项目的pom.xml文件中添加fastjson的依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
2、创建实体类:Employee.java
@Data
public class Employee {
private Integer id;
private String name;
private Integer age;
private String email;
}
3、编写处理器的方法
@Controller
@RequestMapping("/emp")
public class EmployeeController {
//表示层依赖于业务层对象
@Autowired
private EmployeeService employeeService;
@RequestMapping(value = "/getJson",produces = "application/json; charset=utf-8")
@ResponseBody
public String getJson(){
Employee employee = new Employee();
employee.setName("test");
employee.setId(1001);
employee.setAge(20);
employee.setEmail("test@163.com");
return JSON.toJSONString(employee);
}
}
@RequestMapping(value = "/getJson",produces = "application/json; charset=utf-8")中
value = "/getJson":为该处理器方法绑定的访问路径
produces = "application/json; charset=utf-8":为指定json字符串字符集,从而解决中文乱码问题
以上是返回单个对象的json字符串,还可以返回集合对象,如下所示:
@RequestMapping(value = "/getJson",produces = "application/json; charset=utf-8")
@ResponseBody
public String getJson(){
List<Employee> list = employeeService.findEmps();
return JSON.toJSONString(list);
}
4、编写前端页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h4><button>Ajax查询所有员工</button></h4>
</body>
<script src="js/jquery-3.6.0.min.js"></script>
<script>
$("button").click(function () {
$.ajax({
url:"emp/getJson",
type:"post",
success:function(result){
console.log(result.name);
}
});
});
</script>
</html>