请通过浏览器功能收藏网页

spring MVC HttpMessageConverter 的详细解说 spring4技术

发布时间:2018-11-09 21:16:05  作者:本站编辑  来源:本站原创  浏览次数:
我有话说 | 分享 |
www.javainfo.com.cn 上干货 欢迎收藏

 HttpMessageConverter<T> 的作用:

           将请求信息转化并绑定到处理方法的入参中

           将响应结果转为对应类型的响应信息


当控制器处理方法使用到 

@RequestBody/@ResponseBody 

HttpEntity<T>/ResponseEntity<T> 时, Spring 首先根据请求头或响应头的 Accept 属性选择匹配的 HttpMessageConverter,  进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter


注入与输出  也有两类方法:

    使用 @RequestBody / @ResponseBody 对处理方法进行标注 –

    使用 HttpEntity<T> / ResponseEntity<T> 作为处理方法的入参或返回值


下面是书写实例:


        @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