点击查看上一章

现在JSON这种数据格式是被使用的非常的广泛的,SpringMVC作为目前最受欢迎的框架,它对JSON这种数据格式提供了非常友好的支持,可以说是简单到爆。

在我们SpringMVC中只需要添加jackjson的jar包后RequestMappingHandlerAdapter会将MappingJacksonHttpMessageConverter装配进来。而我们使用也只需要使用注解修饰就可以完成JSON格式的转换

@ResponseBoy

//@ResponseBody
@RequestMapping("/getJson")
public @ResponseBody String getJson() {
return "success";
}

我们只需要将方法使用注解@ResponseBody修饰就可以完成JSON格式自动转换,这个注解可以修饰在方法上,也可以修饰在返回值上。我们可以返回任意对象,他会自动转换成JSON格式返回给客户端。

ResponseEntity

除了使用@ResponseBody我们还可以使用ResponseEntity对象作为返回值,这两种方式效果是一样的。

@RequestMapping("/getJson2")
public ResponseEntity<String> getJson2() {
ResponseEntity<String> responseEntity = new ResponseEntity<>("<h1>ResponseEntity</h1>", HttpStatus.OK);
return responseEntity;
}

@RequestBody

该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

<form action="testRequestBody2" method="POST">
<input type="text" name="username"><br>
<input type="password" name="userpass"><br>
<input type="submit" value="登陆">
</form>
@RequestMapping("/testRequestBody")
public String hello(@RequestBody String body) {
System.out.println(body);
return "hello";
}

他会将我们这个表单中的数据转换成字符串类型

HttpEntity

这个对象使用起来效果是与@RequestBody效果是一致的。

@RequestMapping("/testHttpEntity")
public String getJson2(HttpEntity<String> entity) {
System.out.println(entity.getBody());
return "hello";
}

文件下载功能

使用ResponseEntity<byte[]>来实现文件下载。文件下载只需要将文件输出类型该为可以被下载的文件类型设置为ResponseEntity<byte[]>即可。

@RequestMapping("/downFile")
public ResponseEntity<byte[]> testdownFile(HttpSession session) throws IOException {
ServletContext servletContext = session.getServletContext();
InputStream in = servletContext.getResourceAsStream("downloads/down.txt");
byte[] bytes = FileCopyUtils.copyToByteArray(in);
HttpHeaders header = new HttpHeaders();
header.add("Content-Disposition", "attachment;filename=down.txt");
ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(bytes, header, HttpStatus.OK);
return entity;
}

filename这个属性是文件下载的文件名字。

SpringMVC文件下载与JSON格式的更多相关文章

  1. SpringMvc+ajax 实现json格式数据传递

    传JSON对象 前端 function test () { var param = {username : "yitop"}; $.ajax({ timeout : 20000, ...

  2. 扩展SpringMVC以支持绑定JSON格式的请求参数

    此方案是把请求参数(JSON字符串)绑定到java对象,,@RequestBody是绑定内容体到java对象的. 问题描述: <span style="font-size: x-sma ...

  3. SpringMVC通过实体类返回json格式的字符串,并在前端显示

    一.除了搭建springmvc框架需要的jar包外,还需要这两个jar包 jackson-core-asl-1.9.2.jar和jackson-mapper-asl-1.9.2.jar 二.web,. ...

  4. SpringMVC对ServletAPI的支持和JSON格式的转换

    package com.hongcong.controller; import java.io.UnsupportedEncodingException; import java.net.URLDec ...

  5. SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析

    SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析 一:问题demo展示 ...

  6. Springmvc 的post请求的json格式参数

    背景: 这两天在项目中遇到了一个问题.我的环境是springmvc4.1.9,写了几个可以用ajax请求的接口(ajax.jsonp 调用正常).突然一时兴起就用 HTTP 请求的工具(比如火狐浏览器 ...

  7. SpringMVC 实现返回一段数据 & 实现自动发送json格式数据 - AJAX

    实现返回一段数据 - AJAX 当页面通过AJAX来访问Controller时,期望得到的不是一个页面而是一段数据,此时可以使用如下方法,直接向相应中写入数据: /** * 直接向响应中写出数据,通常 ...

  8. SpringMVC前后台数据传递中Json格式的相互转换(前台显示格式、Json-lib日期处理)及Spring中的WebDataBinder浅析

    两个方向: 一.前台至后台: Spring可以自动封装Bean,也就是说可以前台通过SpringMVC传递过来的属性值会自动对应到对象中的属性并封装成javaBean,但是只能是基本数据类型(int, ...

  9. springMVC框架下返回json格式的对象,list,map

    原文地址:http://liuzidong.iteye.com/blog/1069343 注意这个例子要使用jQuery,但是jquery文件属于静态的资源文件,所以要在springMVC中设置静态资 ...

随机推荐

  1. js公共弹出窗插件

    /*错误提示框*/ var wr = function() { var wrap = '<div class="wrapBox opacity"> </div&g ...

  2. python - zipfile模块

    import zipfile # f=zipfile.ZipFile(filename, mode="r", compression=ZIP_STORED, allowZip64= ...

  3. Hadoop环境准备

    1. 集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起. HDFS集群负责海量数据的存储,集群中的角色主要有: NameNode.DataN ...

  4. Springboot引入多个yml方法

    SpringBoot默认加载的是application.yml文件,所以想要引入其他配置的yml文件,就要在application.yml中激活该文件 定义一个application-resource ...

  5. IDEA在同一窗口导入多个项目

    在同一窗口打开多个项目 1. 当前窗口: 2. 3.  选择import module即可.然后一直点击next导入OK即可. 同一窗口目录下创建多个项目 1.File→New→Module 2.Ja ...

  6. JedisCluster

    字符串 setex(key, seconds, value):带过期时间 mset(keysvalues.....):批量操作,是一个原子性(atomic)操作,所有给定key会在同一时间内被设置 h ...

  7. android studio设置窗口颜色和字体

    1.设置左边窗口颜色和字体: 设置中间代码编辑窗口:

  8. P4126 [AHOI2009]最小割

    题目地址:P4126 [AHOI2009]最小割 最小割的可行边与必须边 首先求最大流,那么最小割的可行边与必须边都必须是满流. 可行边:在残量网络中不存在 \(x\) 到 \(y\) 的路径(强连通 ...

  9. WC2019 游记

    Day 0 早上奇迹般的六点半起床平常这时候我还没睡呢 早餐在武汉站吃了一碗28的番茄牛肉米线,结果上菜后我把所有非米线的固体(包括番茄和牛肉)全挑出去了 高二大佬:一个愿宰一个愿挨 在高铁上待了四个 ...

  10. 在Linux下误删文件后恢复【转】

    针对日常维护操作,难免会出现文件误删除的操作.大家熟知linux文件系统不同win有回收站,删除后的文件可以到垃圾箱寻回,要知道linux文件修复比较费劲,网络上面的文档也是五花八门.所以本次研究一种 ...