细节说明:目标方法正常返回JSON需要的数据,可以是一个对象,也可以是一个集合,这里我们返回的是一个Dog对象>转成Json数据格式
在springmve中,如果我们返回一个集合List等,或者返回一个对象,那么springmve可以根据注解来重新进行编码处理,使其成为一个json格式的数据并返回给浏览器.
0、添加依赖,引入spring时自带
1、新建一个cat的javaBean
public class Cat {
private String name;
private String address;
public Cat() {
}
2、写handler ,使用@ReposeBody修饰目标方法
@Controller
public class JsonHandler {
@RequestMapping(value = "/getJson")
@ResponseBody
public Cat getJson() {
Cat cat = new Cat();
cat.setName("宝宝");
cat.setAddress("广西");
return cat;
}
}
3、
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
点击获取Json数据
4、效果
SpringMVC是依靠HttpMessageConverter
(1).使用HttpMessageConverter
(2).当控制器处理方法使用到@RequestBody/@ResponseBody或HttpEntity
(3).@RequestBody和@ResponseBody不需要成对出现
通过@Reauestbodv注解可以将接收到的reauest请求数据【比如字段,其至文件…】,直接转成String,有时我们在开发中就有这样的需求
(需求:比如前端传了一个文件,我们直接就是要他的String字符串)即可以以字符串的形式接收文件
1、写一个目标方法,使用@RequestBody来修饰目标方法的参数,这样接收过来时就会转换
@RequestMapping(value = "/getJson01")
public void getJson01(@RequestBody String content) {
System.out.println("文件的内容 "+content);
}
提交一个文件
2、效果,点击提交文件后,获取到了test.txt的文件内容“hello world”
基于HttpMessageConverter<T>的特性,可以实现一个文件下载的功能。
在SpringMVC中,通过返回ResponseEntity
@Controller
public class DownloadHandler {
@RequestMapping(value = "/download")
public ResponseEntity download(HttpSession session) throws IOException {
//先获取到你要下载的文件的字节输入流inputStream
InputStream is = session.getServletContext().getResourceAsStream("/images/java.png");
//开辟一个字节数组存放文件数据
byte[] bytes = new byte[is.available()];
is.read(bytes);
HttpStatus status = HttpStatus.OK; //返回成功
HttpHeaders headers = new HttpHeaders();//这是告诉浏览器这是返回的一个文件,需要弹出窗口
headers.add("Content-Disposition", "attachment;filename=java.png");
return new ResponseEntity(bytes, headers, status);
}
}
测试文件下载
下载文件