1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)

2.SpringBoot快速上手

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第1张图片

2.1 新建SpringBoot项目

在idea中新建一个Project->选择SpringInitialzr(如图配置完毕)->
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第2张图片
[next]->Web-SpringWeb
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第3张图片
项目基本结构如下:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第4张图片

2.2 开发环境热部署

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第5张图片
具体实现:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第6张图片
第一步:pom.xml中添加依赖:

    
    
        org.springframework.boot
        spring-boot-devtools
        true
    

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第7张图片
第二步:配置application.properties文件:

spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第8张图片
第三步:开启Build project automatically
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第9张图片
第四步:2021-2023版本这个选项的配置,改到Settings-Advanced Settings模块下了。
ctrl+alt+s,进入设置,然后选择Advanced Settings,在Compiler下勾选 Allow auto-make to restart even if developed application is currently running。
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第10张图片
配置完重新启动服务器即可。

3.SpringBoot Controller

3.1.1 web入门

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第11张图片

3.1.2 控制器

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第12张图片

3.1.3 @Controller的用法

image.png
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第13张图片
image.png

3.2.1 路由映射

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第14张图片

3.2.2 路由映射

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第15张图片

3.2.3 路由映射

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第16张图片
例如:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第17张图片
以上两种方式等价,写一行就可以

3.3 参数传递

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第18张图片

3.3.1 get请求方式

congtroller方法:
@RequestMapping配置method=ResquestMethod.GET
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第19张图片
结果:
image.png
多个参数可以用“&”拼接;请求路径中的参数和Controller方法中的参数不一致,可以用@RequestParam注解解决。
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第20张图片
注意:加上@RequestParam后,表明这个参数是必须的,如果请求时不传该参数,则Controller方法将不会被访问到,如下请求结果。
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第21张图片
加上required以后,请求中是否传递该参数都是可以正常访问的
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第22张图片

3.3.2 post请求方式

下载安装ApiPost,修改编码类型为x-www-form-urlencoded:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第23张图片
发送参数:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第24张图片
Body选项意思是把数据放到请求体里
使用get方式如下配置:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第25张图片
参数很多,请求参数需要包装到一个实体类中,数据名、数据类型都要和类中定义的变量保持一致
Controller方法:

@PostMapping("/postTest3")
public String postTest3(User user){
    System.out.println(user);
    return "POST请求";
}

请求结果:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第26张图片

3.3.3 json格式数据

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第27张图片
controller方法:

@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 "通配符请求";
}

结果:
image.png
如果@PostMapping("/test/*"),则对应的请求为“localhost:8080/xxx”
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第28张图片

4.文件上传

4.1 静态资源访问

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第29张图片
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 文件上传原理

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第30张图片

4.3 SpringBoot实现文件上传功能

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第31张图片
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第32张图片
controller方法:

//文件上传功能
@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);
}

请求:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第33张图片
结果:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第34张图片
如果希望用户能通过浏览器到之前上传的文件,需要配置application.properties:

spring.web.resources.static-locations=/upload/

第一个“/”代表服务器所在的路径,即Tomcat所运行的目录
重新上传一下文件,再次测试:
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第35张图片
访问请求后面直接加文件即可

4.4 拦截器

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第36张图片
image.png
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第37张图片

4.4.1 拦截器定义

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第38张图片

4.4.2 拦截器注册

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第39张图片
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第40张图片
拦截器的实现
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第41张图片
config包下创建配置类WebConfig(一般SpringBoot配置都在config包下),只拦截user路径下的请求
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第42张图片
添加@Configuration表明当前是个配置类

5 RESTful服务+Swagger

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第43张图片

5.1 RESTful介绍

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第44张图片

5.2 RESTful的特点

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第45张图片

5.3 RESTful API

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第46张图片

5.3.1 HTTP Method

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第47张图片

5.3.2 HTTP 状态码

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第48张图片

5.4 Spring Boot实现RESTful API

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第49张图片

5.4.1 RESTful规则

image.png
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第50张图片

5.4.2 代码实现

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第51张图片

@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删除用户";
    }

测试getUSerById方法
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第52张图片

5.5 什么是Swagger

image.png
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第53张图片
做完Swagger的配置后,控制器内的方法都会被映射到网页上,更加方便前端调用,也会利于前后端的沟通。

5.5.1 使用Swagger生成Web API文档

image.png
第一步:pom.xml添加依赖

        
        
            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();
    }

启动项目:
image.png
发现报错,提示未能配置数据源
解决:在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进行接口测试

image.png
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第54张图片
访问“http://localhost:8080/swagger-ui.html#/user-controller
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第55张图片
首页为“http://localhost:8080/swagger-ui.html
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第56张图片

5.5.3 Swagger常用注解

image.png
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第57张图片
例如,在getUserById方法上添加注解“@ApiOperation("获取用户")”

    @ApiOperation("获取用户")
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable int id){
        System.out.println(id);
        return "根据ID获取用户信息";
    }

1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第58张图片
可以在Swagger中直接测试接口功能
1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1)_第59张图片

你可能感兴趣的:(1天搞定SpringBoot+Vue全栈开发——刘老师教编程(课堂笔记1))