spring MVC HttpMessageConverter 的详细解说 spring4技术
HttpMessageConverter<T> 的作用:
将请求信息转化并绑定到处理方法的入参中
将响应结果转为对应类型的响应信息
当控制器处理方法使用到
@RequestBody/@ResponseBody
HttpEntity<T>/ResponseEntity<T> 时, Spring 首先根据请求头或响应头的 Accept 属性选择匹配的 HttpMessageConverter, 进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter。
注入与输出 也有两类方法:
使用 @RequestBody / @ResponseBody 对处理方法进行标注 –
使用 HttpEntity<T> / ResponseEntity<T> 作为处理方法的入参或返回值
下面是书写实例:
1
@ResponseBody //格式化输出格式 讲Java对象转换为json列表
@RequestMapping("/json")
public Collection<Employee> json(){
return employeeDao.getAll();
}
2
@ResponseBody //将返回的值 封装为 字符串格式 的JSON 返回给客户端
@RequestMapping("/tttpMessageConverter")
public String tttpMessageConverter(@RequestBody String body){ //注入了请求的主体对象
System.out.println(body);
return "helloworld! " + new Date();
}
3
@RequestMapping("/responseEntity")
// 返回BYTE[]格式化数组 , 系统会根据这个T泛型来决定 那个converter来执行转换信息给客户端
public ResponseEntity<byte[]> responseEntity(HttpSession session) throws IOException{ //注入servletApi对象
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;
}
如有疑问 请留言 欢迎提供建议
评论已有 0 条