@RequestMapping("/testResponseEntity")
public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException{
byte [] body = null;
ServletContext servletContext = session.getServletContext();
InputStream in = servletContext.getResourceAsStream("/files/abc.txt");
body = new byte[in.available()];
in.read(body);
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "attachment;filename=abc.txt");
HttpStatus statusCode = HttpStatus.OK;
ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(body, headers, statusCode);
return response;
}
示例代码中,返回值为ResponseEntity<byte[]>类型时,springmvc使用ByteArrayHttpMessageConverter对返回值进行转换。
springmvc使用MessageCoverter对请求和响应进行转换,在使用RequestEntity、ResponseEntity、@RequestBody和@ResponseBody时,就会影响MessageConverter的选用。
在返回json时,需要使用MappingJackson2HttpMessageConverter,但是spring4.4中需要我们手动配置这个converter,才会加载。
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven>