在不使用HttpServletResponse的情况下设置响应内容类型

a L*_*ner 6 content-type spring-mvc

如何HttpServletResponse object在我的spring控制器中获取方法,以便我的应用程序与Http API保持松散耦合?

谢谢...

编辑:其实我想要的是在我的控制器中设置HttpServletResponse对象的ContentType.春天为此提供了任何方式,而没有将HttpServletResponse对象作为控制器方法中的参数?

ska*_*man 10

我可以看到两个选项:

如果您想要的内容类型是静态的,那么您可以将其添加到@RequestMapping例如

@RequestMapping(value="...", produces="text/plain")
Run Code Online (Sandbox Code Playgroud)

但这仅在HTTP请求在其Accept标头中包含相同内容类型时才有效.请参见16.3.2.5可生成的介质类型.

或者,使用ResponseEntity例如

@RequestMapping("/something")
public ResponseEntity<String> handle() {
  HttpHeaders responseHeaders = new HttpHeaders();
  responseHeaders.setContentType(new MediaType("text", "plain"));
  return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
}
Run Code Online (Sandbox Code Playgroud)

MediaType还有一些常见的mime类型定义为常量,例如MediaType.TEXT_PLAIN.

16.3.3.6使用HttpEntity<?>


xpa*_*pad 2

只需将其作为参数传递,例如

@RequestMapping( value="/test", method = RequestMethod.GET )
public void test( HttpServletResponse response ) { ... }
Run Code Online (Sandbox Code Playgroud)