ToB企服应用市场:ToB评测及商务社交产业平台

标题: SpringMVC:@ResponseBody注解与HttpServletResponse对象 [打印本页]

作者: 种地    时间: 2024-7-17 19:37
标题: SpringMVC:@ResponseBody注解与HttpServletResponse对象
在Spring MVC框架中,@ResponseBody注解和HttpServletResponse对象都扮演着将处置惩罚结果发送回客户端的重要角色,但它们的使用方式和目标有所差异。
@ResponseBody

@ResponseBody注解用于将方法的返回值绑定到web响应体(response body)上。当你使用@ResponseBody注解一个方法的返回值时,Spring会自动选择一个合适的HttpMessageConverter,将返回值转换为对应的格式(如JSON、XML等),并写入HTTP响应体中。这通常用于RESTful Web服务中,当你需要直接返回数据(如JSON或XML)给客户端时。
使用示例
  1. @RestController
  2. public class MyController {
  3.     @GetMapping("/greeting")
  4.     @ResponseBody // 通常与@RestController一起使用时可以省略
  5.     public String greeting() {
  6.         return "Hello, World!";
  7.     }
  8.     // 使用@RestController时,下面的@ResponseBody可以省略
  9.     @GetMapping("/jsonGreeting")
  10.     public MyResponseObject jsonGreeting() {
  11.         MyResponseObject response = new MyResponseObject();
  12.         response.setMessage("Hello in JSON");
  13.         return response; // Spring将自动使用HttpMessageConverter转换为JSON
  14.     }
  15. }
复制代码
HttpServletResponse

HttpServletResponse是Servlet API的一部分,它代表了Servlet对客户端的响应。你可以通过它来直接控制HTTP响应的各个方面,包括状态码、响应头以及响应体。当你需要更细粒度的控制响应时(好比设置特定的响应头、发送二进制文件等),HttpServletResponse就显得非常有用。
使用示例
  1. @Controller
  2. public class MyServletController {
  3.     @GetMapping("/customResponse")
  4.     public void customResponse(HttpServletResponse response) throws IOException {
  5.         response.setContentType("text/plain");
  6.         response.setCharacterEncoding("UTF-8");
  7.         response.getWriter().write("Custom response using HttpServletResponse");
  8.     }
  9.     @GetMapping("/fileDownload")
  10.     public void fileDownload(HttpServletResponse response) throws IOException {
  11.         // 设置响应头
  12.         response.setContentType("application/pdf");
  13.         response.setHeader("Content-Disposition", "attachment; filename="example.pdf"");
  14.         // 假设你有一个获取文件输入流的方法
  15.         InputStream inputStream = getFileAsStream("path/to/example.pdf");
  16.         // 使用ServletOutputStream将文件内容写入响应
  17.         ServletOutputStream outputStream = response.getOutputStream();
  18.         IOUtils.copy(inputStream, outputStream); // 使用Apache Commons IO库来复制流
  19.         outputStream.flush();
  20.     }
  21. }
复制代码
总结


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4