Spring mvc-文件上传与JSON-学习笔记
原创
©著作权归作者所有:来自51CTO博客作者Maynor学长的原创作品,请联系作者获取转载授权,否则将追究法律责任
2.文件上传
2.1 多文件上传
- 表单
<form action="${pageContext.request.contextPath}/file/upload2.action" method="post" enctype="multipart/form-data">
选择文件: <input type="file" name="images" /> <br/>
选择文件: <input type="file" name="images" /> <br/>
选择文件: <input type="file" name="images" /> <br/>
<input type="submit" value="上传"/> <br/>
</form>
- 控制器
@RequestMapping("/upload2")
public String upload2(List<MultipartFile> images) throws Exception {
for (MultipartFile image : images) {
System.out.println("上传文件名:" + image.getOriginalFilename());
System.out.println("上传文件流:" + image.getInputStream());
File file = new File("D:\\xml", image.getOriginalFilename());
FileUtils.copyInputStreamToFile(image.getInputStream(), file );
}
return "book";
}
3. JSON
3.1 JSON 使用流程分析
3.2 JSON数据
- 是一种轻量级的数据交换格式。
- 轻量级,不依赖任何框架,任何语言。
- 对象
-
{
"k":"v",
"k2":"v2",....
}
- key必须使用双引号
- value除特殊类型外,都需要使用双引号。(特殊类型:数字、布尔true/false)
3.3 入门案例
3.3.1 目标
- 目标:请求JSON数据,响应JSON数据
- 案例:用户条件查询,
- 请求:查询条件
User
- 响应:查询结果
List<User>
- 前提:spring mvc 底层 jackson 处理json数据。
3.3.2 步骤
- 导入 jackson 相关的jar包
- 编写JavaBean:User
- 编写controller,接收请求数据 @RequestBody
- 编写controller,响应数据 @ResponseBody
- postman测试
3.3.3 实现
- 导入 jackson 相关的jar包
- 编写JavaBean:User
package com.czxy.mvcanno.domain;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
* @author 桐叔
* @email liangtong@itcast.cn
*/
public class User {
private Integer id;
private String username;
private String password;
public User() {
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
// getter和setter
}
- 编写controller,接收请求数据 @RequestBody
package com.czxy.mvcanno.controller;
import com.czxy.mvcanno.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author 桐叔
* @email liangtong@itcast.cn
*/
@Controller
@RequestMapping("/json")
public class JsonController {
@RequestMapping("/list")
public void list(@RequestBody User user) {
System.out.println(user);
}
}
- 编写controller,响应数据 @ResponseBody
package com.czxy.mvcanno.controller;
import com.czxy.mvcanno.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.List;
/**
* @author 桐叔
* @email liangtong@itcast.cn
*/
@Controller
@RequestMapping("/json")
public class JsonController {
@RequestMapping("/list")
@ResponseBody
public List<User> list(@RequestBody User user) {
System.out.println(user);
//响应数据
List<User> list = new ArrayList<>();
list.add(new User(1,"jack","1234"));
list.add(new User(2,"rose","6666"));
list.add(new User(3,"tom","loverose"));
return list;
}
}
- postman测试
3.4 常见注解
-
@JsonIgnore
作用是json序列化时将java bean中的一些属性忽略掉~
public class User {
@JsonIgnore
private List<String> hobby;
public class User {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date birthday;