如何在我的spring控制器的方法中获取HttpServletResponse object
,以便我的应用程序与Http API保持松散耦合?
...谢谢
编辑:实际上我想要的是在我的控制器中设置HttpServletResponse对象的 ContentType 。春天是否为此提供了任何方法,而没有将HttpServletResponse对象作为控制器方法中的参数?
答案 0 :(得分:8)
我可以看到两个选项:
如果您想要的内容类型是静态的,那么您可以将其添加到@RequestMapping
,例如
@RequestMapping(value="...", produces="text/plain")
这仅在HTTP请求在其Accept
标头中包含相同内容类型时才有效。请参阅16.3.2.5 Producible Media Types。
或者,使用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);
}
MediaType
还有一些常见的mime类型定义为常量,例如MediaType.TEXT_PLAIN
。
答案 1 :(得分:1)
将其作为参数传递,例如
@RequestMapping( value="/test", method = RequestMethod.GET )
public void test( HttpServletResponse response ) { ... }
答案 2 :(得分:0)
我认为处理此问题的最佳方法是使用特定的View-Implementation,因为此处应该进行响应呈现。