【JAVA学习】05-跟着黑马程序员课程敲全栈项目(二)
发表于:2024-03-16 |

前言

emm,咋说呢,他们说我之前看的那个视频质量不行,我就打算换一个视频看看了,听说这个视频质量还行,那我就跟着这个视频学习一下,入门一下咱们的java。

项目课程地址

https://www.bilibili.com/video/BV1TP411v7v6/?spm_id_from=333.999.0.0&vd_source=4aa14fa9c4cfa0270340f6370b8b6ab8

前端环境的启动

这个项目讲真是真的实在,他都不讲前端的项目如何搞出来,只说java的东西,这对我来说真的太合适了,我们拿到资料之后,将这个目录下的ngnix文件拷贝到我们没有中文目录的地方,然后点击nginx.exe就可以启动了,然后我们在浏览器中输入localhost:80就可以看到我们的前端页面了
启动nginx
页面启动之后,就是下面这个样子:
前端页面

后端初始环境的搭建

这个他给了我们现成的资料,我们只需要将这个项目导入到我们的IDEA中就可以
导入项目

IDEA中配置Git

创建本地git

首先点击VCS->Create Git Repository
然后选择我们的项目目录,点击OK
创建本地git
创建本地git

提交本地commit

点击小对勾
提交本地commit
然后点击commit
提交本地commit

管理远程地址

管理远程git与本地git连接
管理远程地址
管理远程地址

push代码

点击小对勾右边的箭头,点击push提交代码
push代码
操作完成之后,我们的库就有了代码
push代码
到这一步,我们的idea的git环境就配置好了

初始化数据库

我们将资源中的这个路径下的sky.sql文件导入到我们的数据库中
初始化数据库
执行完成之后,就会有我们的数据库的表
初始化数据库

前后端联调

项目中,已经将登录部分的代码写好了,我们现在要将前端和后端联调起来

配置maven启动项目

首先我们需要先编译一下maven,如果你没有环境的话,先进行install,再点击compile
编译maven

配置数据库密码

我们需要将我们的数据库密码配置到我们的项目中
配置数据库密码

启动项目

然后我们点击运行,就可以看到我们的后端项目已经启动了
启动项目

前端点击登录

此时我们在前端点击登录,我们的页面就进去了
前端点击登录

后端登录大概流程

我们先来看一下controller层的代码,他接受参数,传给service
后端登录大概流程
然后他会先去调用service层的代码进行校验
后端登录大概流程
在校验的时候,会去执行mapper层的sql查询语句
后端登录大概流程
然后校验完毕之后,在controller层用jwt生成token和返回使用builder注解将token和其他用户信息返回给前端。

前端登录大概流程以及ngnix代理

打开控制台,我们可以看到,我们的前端页面发送了一个请求,这个请求是我们的登录请求
前端登录大概流程以及ngnix代理
此时我们可以看到,我们这个地址貌似和我们后端的请求不太一致,其实这个api是我们的nginx代理的地址,这个我们在测试阶段如果后端没处理跨域的时候,我们经常会在vite,webpack里面开启代理,这个nginx也是一个代理,我们在线上环境的时候是不可能用vite,webpack的代理的,所以我们就用nginx代理了,这个代理的配置在nginx.conf文件中,代理的逻辑是一样的,避免跨域。这个代理还有其他的好处,比如说可以更好保护我们后端的接口之类的。
我们打开这个nginx.conf文件来看一下

1
2
3
4
5
6
7
8
# 反向代理,处理管理端发送的请求
server {
listen 80;
server_name localhost;
location /api/ {
proxy_pass http://localhost:8080/admin/;
}
}

可以看到,他将我们的api字符串给替换成了http://localhost:8080/admin/

同时我们可以使用nginx的负载均衡来控制服务器的压力

1
2
3
4
upstream webservers{
server 127.0.0.1:8080 weight=90 ;
server 127.0.0.1:8088 weight=10 ;
}

比如我们启动了俩个服务,一个是8080端口,一个是8088端口,我们可以通过这个配置来控制他们的压力,这个配置的意思是,我们的请求有90%的概率会被转发到8080端口,10%的概率会被转发到8088端口。默认是没有weight的,也就是说默认是1:1的概率。以下是我们负载均衡的一些配置属性
负载均衡的一些配置属性

登录密码添加md5加密

我们先将数据库的密码进行替换
登录密码添加md5加密
然后在校验密码的时候也将前端传过来的密码进行md5加密,然后将密文进行比对
登录密码添加md5加密

导入接口文档

课程中直接是yapi导入的,我没那玩意,我就用apifox导入了,操作也很简单,导入文件,选择yapi格式,然后导入json即可,json从课程中的资料中找到,路径和我之前的都是一样的,在day1中。
导入接口文档

Swagger

Swagger的引入

  1. 导入knife4j的maven坐标

    1
    2
    3
    4
    <dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    </dependency>
  2. 在配置类中加入knife4j的相关配置
    这里定义文档名称和需要扫描的包

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /**
    * 通过knife4j生成接口文档
    * @return
    */
    @Bean
    public Docket docket() {
    ApiInfo apiInfo = new ApiInfoBuilder()
    .title("苍穹外卖项目接口文档")
    .version("2.0")
    .description("苍穹外卖项目接口文档")
    .build();
    Docket docket = new Docket(DocumentationType.SWAGGER_2)
    .apiInfo(apiInfo)
    .select()
    .apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
    .paths(PathSelectors.any())
    .build();
    return docket;
    }
  3. 设置静态资源映射,否则接口文档页面无法访问

    1
    2
    3
    4
    5
    6
    7
    8
    /**
    * 设置静态资源映射
    * @param registry
    */
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

这样配置完毕之后,我们就可以访问我们的接口文档
Swagger

Swagger的常用注解

Swagger
我在项目中添加了这些注解
在controller中给class添加了@Api注解
Swagger
在方法上添加了@ApiOperation注解
Swagger
在实体中添加了@ApiModel注解,在实体中添加了@ApiModelProperty注解
Swagger
最终这些注解会在接口文档中显示出来
Swagger

结语

本篇文章就到这里了,趁着大小周的双休日稍微学一点,继续学习,尽快搞定学习java小目标。

上一篇:
【JAVA学习】06-跟着黑马程序员课程敲全栈项目(三)
下一篇:
搞一个定制的二维码生成器