SpringMVC-08-响应
1、请求跳转
当 Controller 中方法不注解 @ResponseBody 时,返回值(字符串)将被当作新的路径跳转,可以是 jsp 文件,也可以是其他方法的路径,跳转后携带原来的请求数据
相反,方法上注解 @ResponseBody 之后,返回值会被当作响应体,可以是文本或者 JSON 数据
@Controller
public class UserController {
@RequestMapping("/demo1")
public String pojoParam(String data) {
System.out.println("跳转到:/demo2");
return "/demo2";
}
@RequestMapping("/demo2")
@ResponseBody
public String toJumpPage(String data) {
// 跳转前的数据会被携带
System.out.println("收到数据:" + data);
return "Hello!!";
}
}
2、响应返回 JSON 数据
想要返回 JSON 数据到响应体中,直接把返回值类型改为对象即可,可以是 POJO 对象,或者数组和集合,SpringMVC 会自动将对象转化为 JSON 数据(需要导入 jackson-databind 坐标)
@RequestMapping("/toJsonPOJO")
@ResponseBody
public User toJsonPOJO() {
User user = new User();
user.setName("Jay");
user.setAge(17);
return user;
}
@RequestMapping("/toJsonPOJOList")
@ResponseBody
public List<User> toJsonPOJOList() {
List<User> users = new ArrayList<>();
users.add(new User("Jay", 17));
users.add(new User("JJ", 18));
return users;
}
将对象转化为 JSON 数据的过程由类型转换器 HttpMessageConverter 接口完成