SpringBoot 基本web应用开发

a 夏天 提交于 2019-12-03 12:15:46

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目录下新建 publicresourcesstatic 三个目录,并分别放入 a.jpg b.jpg c.jpg 图片

 

 

 

 

浏览器分别访问:

http://localhost:8080/a.jpg

http://localhost:8080/b.jpg

http://localhost:8080/c.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:在这里配置静态资源路径,前面说了这里的配置是覆盖默认配置,所以需要将默认的也加上否则staticpublic等这些路径将不能被当作静态资源路径,在这个最末尾的file:${web.upload-path}之所有要加file:是因为指定的是一个具体的硬盘路径,其他的使用classpath指的是系统环境变量。

然后,重启项目

例如,在D:/springboot/pic/中有一张8.png图片

在浏览器输入:http://localhost:8080/8.png 即可访问

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!