2.SpringBoot快速上手
2.1 新建SpringBoot项目
在idea中新建一个Project->选择SpringInitialzr(如图配置完毕)->
[next]->Web-SpringWeb
项目基本结构如下:
2.2 开发环境热部署
org.springframework.boot
spring-boot-devtools
true
第二步:配置application.properties文件:
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java
第三步:开启Build project automatically
第四步:2021-2023版本这个选项的配置,改到Settings-Advanced Settings模块下了。
ctrl+alt+s,进入设置,然后选择Advanced Settings,在Compiler下勾选 Allow auto-make to restart even if developed application is currently running。
配置完重新启动服务器即可。
3.SpringBoot Controller
3.1.1 web入门
3.1.2 控制器
3.1.3 @Controller的用法
3.2.1 路由映射
3.2.2 路由映射
3.2.3 路由映射
3.3 参数传递
3.3.1 get请求方式
congtroller方法:
@RequestMapping配置method=ResquestMethod.GET
结果:
多个参数可以用“&”拼接;请求路径中的参数和Controller方法中的参数不一致,可以用@RequestParam注解解决。
注意:加上@RequestParam后,表明这个参数是必须的,如果请求时不传该参数,则Controller方法将不会被访问到,如下请求结果。
加上required以后,请求中是否传递该参数都是可以正常访问的
3.3.2 post请求方式
下载安装ApiPost,修改编码类型为x-www-form-urlencoded:
发送参数:
Body选项意思是把数据放到请求体里
使用get方式如下配置:
参数很多,请求参数需要包装到一个实体类中,数据名、数据类型都要和类中定义的变量保持一致
Controller方法:
@PostMapping("/postTest3")
public String postTest3(User user){
System.out.println(user);
return "POST请求";
}
3.3.3 json格式数据
@PostMapping("/postTest4")
public String postTest4(@RequestBody User user){
System.out.println(user);
return "POST请求";
}
3.3.4 通配符请求
@PostMapping("/test/**")对应的请求为“localhost:8080/xxx/xxx”
controller方法:
@PostMapping("/test/**")
public String test(@RequestBody User user){
return "通配符请求";
}
结果:
如果@PostMapping("/test/*"),则对应的请求为“localhost:8080/xxx”
4.文件上传
4.1 静态资源访问
resources/static目录默认映射为服务器的根目录,凡是该目录下的,直接访问“localhost:8080/资源名称”即可;但为了方便统一管理,需要将静态资源访问路径进行配置
application.properties中配置:
spring.mvc.static-path-pattern=/images/**
这样静态资源的访问路径变为:“localhost:8080/images/资源名称”
如果想把静态资源放到自定义目录下,可以配置:
spring.web.resources.static-locations=classpath:/css
calsspath是类路径,属于编译完以后的项目根目录。一般很少自定义存放目录,了解即可。
4.2 文件上传原理
4.3 SpringBoot实现文件上传功能
//文件上传功能
@PostMapping("/upload")
public String up(String nickname, MultipartFile photo, HttpServletRequest request) throws IOException {
System.out.println(nickname);
//获取图片的原始名称
System.out.println(photo.getOriginalFilename());
//获取文件类型
System.out.println(photo.getContentType());
String path = request.getServletContext().getRealPath("/upload");
saveFile(photo,path);
return("上传成功");
}
//保存用户上传的文件
public void saveFile(MultipartFile photo,String path) throws IOException{
//判断存储的目录是否存在,不存在则创建
File dir = new File(path);
if(!dir.exists()){
//创建目录
dir.mkdir();
}
//新建文件用于存储上传的文件
File file = new File(path+photo.getOriginalFilename());
photo.transferTo(file);
}
请求:
结果:
如果希望用户能通过浏览器到之前上传的文件,需要配置application.properties:
spring.web.resources.static-locations=/upload/
第一个“/”代表服务器所在的路径,即Tomcat所运行的目录
重新上传一下文件,再次测试:
访问请求后面直接加文件即可
4.4 拦截器
4.4.1 拦截器定义
4.4.2 拦截器注册
拦截器的实现
config包下创建配置类WebConfig(一般SpringBoot配置都在config包下),只拦截user路径下的请求
添加@Configuration表明当前是个配置类
5 RESTful服务+Swagger
5.1 RESTful介绍
5.2 RESTful的特点
5.3 RESTful API
5.3.1 HTTP Method
5.3.2 HTTP 状态码
5.4 Spring Boot实现RESTful API
5.4.1 RESTful规则
5.4.2 代码实现
@RestController
public class UserController {
@GetMapping("/user/{id}")
public String getUserById(@PathVariable int id){
System.out.println(id);
return "根据ID获取用户信息";
}
@PostMapping("/user")
public String save(User user){ return "添加用户"; }
@PutMapping("/user")
public String update(User user){ return "更新用户"; };
@DeleteMapping("/user/{id}")
public String deleteById(@PathVariable int id){
System.out.println(id);
return "根据ID删除用户";
}
5.5 什么是Swagger
做完Swagger的配置后,控制器内的方法都会被映射到网页上,更加方便前端调用,也会利于前后端的沟通。
5.5.1 使用Swagger生成Web API文档
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
第二步:配置Swagger,在config下新建一个配置类Swagger2Config
@Configuration //告诉Spring容器,这个类是一个配置类
@EnableSwagger2 //启用Swagger2功能
public class Swagger2Config {
//配置Swagger2相关的bean
@Bean
public Docket creatRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
////com包下所有API都交给Swagger2管理
.apis(RequestHandlerSelectors.basePackage("com"))
.paths(PathSelectors.any()).build();
}
//此处主要是API文档页面显示信息
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("演示项目API") //标题
.description("学习Swagger2的演示项目") //描述
.build();
}
启动项目:
发现报错,提示未能配置数据源
解决:在application.properties中添加添加如下配置,具体原理可参考“Spring Boot中 MVC匹配策略”https://blog.csdn.net/Fornewknowledge/article/details/130548969
再次启动项目,可正常运行
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
5.5.2 使用Swagger2进行接口测试
访问“http://localhost:8080/swagger-ui.html#/user-controller”
首页为“http://localhost:8080/swagger-ui.html”
5.5.3 Swagger常用注解
例如,在getUserById方法上添加注解“@ApiOperation("获取用户")”
@ApiOperation("获取用户")
@GetMapping("/user/{id}")
public String getUserById(@PathVariable int id){
System.out.println(id);
return "根据ID获取用户信息";
}