1、SpringBoot json支持
(1)、创建实体bean Car
Lombok使用
1、导入依赖库
1 <dependency> 2 <groupId>org.projectlombok</groupId> 3 <artifactId>lombok</artifactId> 4 <version>1.18.6</version> 5 </dependency>
2、安装插件
Lombok
3、在实体bean使用
@Data //get 、set
@AllArgsConstructor //所有参数的有参数构造函数
@NoArgsConstructor //无参数构造函数
1 package com.wf.po; 2 import lombok.AllArgsConstructor; 3 import lombok.Data; 4 import lombok.NoArgsConstructor; 5 @Data //get 、set toString 6 @AllArgsConstructor //所有参数的有参数构造函数 7 @NoArgsConstructor //无参数构造函数 8 public class Car { 9 private Integer id; 10 private String name; 11 private Float price; 12 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") 13 14 private Date createdate; 15 16 }
(2)、创建Controller CarController
1 package com.wf.controller; 2 3 import com.wf.po.Car; 4 import org.springframework.cache.CacheManager; 5 import org.springframework.stereotype.Controller; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.ResponseBody; 8 import org.springframework.web.bind.annotation.RestController; 9 10 import java.util.ArrayList; 11 import java.util.List; 12 13 @RestController 14 @RequestMapping("/car") 15 public class CarController { 16 17 @RequestMapping("/findone") 18 public Car findOneCar(){ 19 Car car = new Car(1, "toyo", 1999.99F,new Date(),"13567890001"); 20 21 22 23 return car; 24 } 25 26 27 } 28 29
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。说明:@RestController 注解,等于@Controller 与 @ResponseBody 一起使用
一般情况下来说常用其来处理application/json类型
2、SpringBoot 请求传递参数
1.1. 第一类:请求路径传参
@RequestParam 获取查询参数。即url?name=value 这种形式
@PathVariable 获取路径参数。即url/{id} 这种形式
(1)、修改Controller CarController新增接收参数,返回单个对象方法
1
1 package com.wf.springbootdemo.controller; 2 3 import com.wf.springbootdemo.po.Car; 4 import org.springframework.web.bind.annotation.*; 5 6 import java.util.Date; 7 8 @RestController 9 @RequestMapping("/car") 10 public class CarController { 11 @RequestMapping("/findOne") 12 public Car Demo1(){ 13 Car car=new Car(1,"小奔驰",1000,new Date()); 14 return car; 15 } 16 // http://localhost:8080/car/findTwo/kkk?id=10 17 @RequestMapping("/findTwo/{name}") 18 public Car Demo2(@RequestParam(name = "id") Integer id, @PathVariable(name = "name") String name){ 19 Car car=new Car(); 20 car.setId(id); 21 car.setName(name); 22 car.setPrice(1999); 23 car.setCreatedate(new Date()); 24 return car; 25 } 26 // @PathVariable占位符 @RequestParam问号后面的参数 27 //http://localhost:8080/car/findThree/10?name=%E5%A4%A7%E5%AE%9D%E9%A9%AC 28 @RequestMapping("/findThree/{id}") 29 public Car Demo3(@PathVariable(name = "id") Integer id, @RequestParam(name = "name") String name){ 30 Car car=new Car(); 31 car.setId(id); 32 car.setName(name); 33 car.setPrice(1999); 34 car.setCreatedate(new Date()); 35 return car; 36 } 37 38 39 }
(2)、测试传递参数获取单个对象json
请求地址:
http://localhost:8080/car/findTwo/kkk?id=10或
http://localhost:8080/car/findThree/10?name=%E5%A4%A7%E5%AE%9D%E9%A9%AC
3、SpringBoot 静态资源
(1)、默认静态资源映射
Spring Boot 对静态资源映射提供了默认配置
Spring Boot 默认将 /** 所有访问映射到以下目录:
classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
如:在resources目录下新建 public、resources、static 三个目录,并分别放入 a.jpg b.jpg c.jpg 图片
浏览器分别访问:
http://localhost:8080/a.jpg
http://localhost:8080/b.jpg
均能正常访问相应的图片资源。那么说明,Spring Boot 默认会挨个从 public resources static 里面找是否存在相应的资源,如果有则直接返回。
(2)、自定义静态资源访问
试想这样一种情况:一个网站有文件上传文件的功能,如果被上传的文件放在上述的那些文件夹中会有怎样的后果?
网站数据与程序代码不能有效分离;
当项目被打包成一个.jar文件部署时,再将上传的文件放到这个.jar文件中是有多么低的效率;
网站数据的备份将会很痛苦。
此时可能最佳的解决办法是将静态资源路径设置到磁盘的基本个目录。
第一种方式
1、配置类
1 package com.wf.demo.config; 2 3 4 5 import org.springframework.context.annotation.Configuration; 6 7 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 8 9 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 10 11 12 13 @Configuration 14 15 public class WebMvcConfig implements WebMvcConfigurer { 16 17 @Override 18 19 public void addResourceHandlers(ResourceHandlerRegistry registry) { 20 21 //将所有D:\\springboot\\pic\\ 访问都映射到/myPic/** 路径下 22 23 registry.addResourceHandler("/myPic/**").addResourceLocations("file:D:\\springboot\\pic\\"); 24 25 } 26 27 } 28 29
2、重启项目上面的意思就是:将所有D:/springboot/pic/ 访问都映射到/myPic/** 路径下
例如,在D:/springboot/pic/中有一张logo.jpg图片
在浏览器输入:http://localhost:8080/myPic/logo.jpg即可访问。
第二种方式
首先,我们配置application.properties
1 web.upload-path=D:/springboot/pic/ 2 3 spring.mvc.static-path-pattern=/** 4 5 spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\ 6 7 classpath:/static/,classpath:/public/,file:${web.upload-path}
web.upload-path:这个属于自定义的属性,指定了一个路径,注意要以/结尾;注意:
spring.mvc.static-path-pattern=/**:表示所有的访问都经过静态资源路径;
spring.resources.static-locations:在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,所以需要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径,在这个最末尾的file:${web.upload-path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量。
然后,重启项目
例如,在D:/springboot/pic/中有一张8.png图片
在浏览器输入:http://localhost:8080/8.png 即可访问