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 使用流程分析

Spring mvc-文件上传与JSON-学习笔记_json

3.2 JSON数据


  • 什么是JSON数据?

  • 是一种轻量级的数据交换格式。
  • 轻量级,不依赖任何框架,任何语言。

  • 数据分类:对象、数组

  • 对象
  • ​{ "k":"v", "k2":"v2",.... } ​

  • key必须使用双引号
  • value除特殊类型外,都需要使用双引号。(特殊类型:数字、布尔true/false)

  • 数组
    ​[ 元素,元素2,.... ] ​


3.3 入门案例

3.3.1 目标


  • 目标:请求JSON数据,响应JSON数据
  • 案例:用户条件查询,

  • 请求:查询条件 ​​User​
  • 响应:查询结果 ​​List<User>​

  • 前提:spring mvc 底层 jackson 处理json数据。

3.3.2 步骤

  • 步骤:

  1. 导入 jackson 相关的jar包
  2. 编写JavaBean:User
  3. 编写controller,接收请求数据 @RequestBody
  4. 编写controller,响应数据 @ResponseBody
  5. postman测试

3.3.3 实现


  • 导入 jackson 相关的jar包
    Spring mvc-文件上传与JSON-学习笔记_json_02
  • 编写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测试
    Spring mvc-文件上传与JSON-学习笔记_json_03

3.4 常见注解

  • ​@JsonIgnore​​ 作用是json序列化时将java bean中的一些属性忽略掉~
public class User {

@JsonIgnore
private List<String> hobby;
  • ​@JsonFormat​​ 格式化日期
public class User {

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date birthday;