引言
Spring MVC 连接前端与后端,帮助开发者驾驭复杂业务逻辑。本篇聚焦于控制层如何返回响应内容。
一、返回响应内容
1. 设置状态码
在控制层中,我们可以利用 HttpServletResponse 对象来设置 HTTP 响应状态码。
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping("/response")
@Controller
public class ResponseController {
// 设置状态码,利用响应 HttpServletResponse 来设置
@RequestMapping("/setStatus")
@ResponseBody
public Student setStatus(HttpServletResponse response) {
Student student = new Student();
student.setName("dalao");
student.setAge(18);
student.setGender("nv");
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return student;
}
}
类定义前加入 @RequestMapping("/response") 和 @Controller,方法定义前加入 @RequestMapping("/setStatus") 和 @ResponseBody。使用 HttpServletResponse 类型接收响应方式,通过 response.setStatus() 设置状态码。例如 HttpServletResponse.SC_BAD_REQUEST 对应 400 错误。
关于这些状态码常量,可以参考源码中的枚举定义,根据具体需求进行设置。

2. 设置报文格式
可以通过 produces 属性指定响应内容的媒体类型。
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping("/response")
@Controller
public class ResponseController {
/**
* 设置报文格式
*/
@RequestMapping(value = "/setContentType", produces = "application/json")
@ResponseBody
public String setContentType() {
// 此处省略具体实现
return "";
}
}


