springmvc 返回json数据和HttpMessageConverter
一、步骤
1、在目标方法上注解@ResponseBody
2、目标方法直接返回List或者Map
二、HttpMessageConverter
作用:
将请求信息转化并绑定到处理方法的入参中或者转化为对应类型的响应信息;即将请求信息转化为一个对象,或者将对象输出为响应信息
工作原理图解:
使用方法:
一、使用RequestBody和ResponseBody注解
二、使用HttppEntity<T>和ResponseEntity<T>
例子:
1、测试文件上传
目标方法:
@ResponseBody @RequestMapping("testHttpMessageConverter") public String testHttpMessageConverter(@RequestBody String body) { System.out.println(body); return "success!" + new Date(); }
页面:
<form action="testHttpMessageConverter" method="post" enctype="multipart/form-data"> File:<input type="file" name="filename"> Desc:<input type="text" name="desc"> <input type="submit" value="Submit"> </form>
2、模拟文件下载
目标方法:
/** * 使用ResponseEntity模拟文件下载 * @param httpSession * @return * @throws IOException */ @RequestMapping("/testResponseEntity") public ResponseEntity<byte[]> testResponseEntity(HttpSession httpSession) throws IOException{ byte[] body = null; ServletContext servletContext = httpSession.getServletContext(); InputStream is = servletContext.getResourceAsStream("/success.jsp"); body = new byte[is.available()]; is.read(body); HttpHeaders headers =new HttpHeaders(); headers.add("Content-Disposition", "attachment;filename=success.jsp"); HttpStatus status = HttpStatus.OK; ResponseEntity<byte[]> responseEntity = new ResponseEntity<byte[]>(body, headers, status); return responseEntity; }
页面端:
<a href="testResponseEntity">testResponseEntity</a>
邮箱:wangh_2@sina.com