前言
emm,咋说呢,他们说我之前看的那个视频质量不行,我就打算换一个视频看看了,听说这个视频质量还行,那我就跟着这个视频学习一下,入门一下咱们的java。
项目课程地址
前端环境的启动
这个项目讲真是真的实在,他都不讲前端的项目如何搞出来,只说java的东西,这对我来说真的太合适了,我们拿到资料之后,将这个目录下的ngnix文件拷贝到我们没有中文目录的地方,然后点击nginx.exe就可以启动了,然后我们在浏览器中输入localhost:80就可以看到我们的前端页面了
页面启动之后,就是下面这个样子:
后端初始环境的搭建
这个他给了我们现成的资料,我们只需要将这个项目导入到我们的IDEA中就可以
IDEA中配置Git
创建本地git
首先点击VCS->Create Git Repository
然后选择我们的项目目录,点击OK
提交本地commit
点击小对勾
然后点击commit
管理远程地址
管理远程git与本地git连接
push代码
点击小对勾右边的箭头,点击push提交代码
操作完成之后,我们的库就有了代码
到这一步,我们的idea的git环境就配置好了
初始化数据库
我们将资源中的这个路径下的sky.sql文件导入到我们的数据库中
执行完成之后,就会有我们的数据库的表
前后端联调
项目中,已经将登录部分的代码写好了,我们现在要将前端和后端联调起来
配置maven启动项目
首先我们需要先编译一下maven,如果你没有环境的话,先进行install,再点击compile
配置数据库密码
我们需要将我们的数据库密码配置到我们的项目中
启动项目
然后我们点击运行,就可以看到我们的后端项目已经启动了
前端点击登录
此时我们在前端点击登录,我们的页面就进去了
后端登录大概流程
我们先来看一下controller
层的代码,他接受参数,传给service
层
然后他会先去调用service
层的代码进行校验
在校验的时候,会去执行mapper
层的sql查询语句
然后校验完毕之后,在controller
层用jwt生成token和返回使用builder注解将token和其他用户信息返回给前端。
前端登录大概流程以及ngnix代理
打开控制台,我们可以看到,我们的前端页面发送了一个请求,这个请求是我们的登录请求
此时我们可以看到,我们这个地址貌似和我们后端的请求不太一致,其实这个api
是我们的nginx
代理的地址,这个我们在测试阶段如果后端没处理跨域的时候,我们经常会在vite,webpack里面开启代理,这个nginx
也是一个代理,我们在线上环境的时候是不可能用vite,webpack的代理的,所以我们就用nginx
代理了,这个代理的配置在nginx.conf
文件中,代理的逻辑是一样的,避免跨域。这个代理还有其他的好处,比如说可以更好保护我们后端的接口之类的。
我们打开这个nginx.conf
文件来看一下
1 | # 反向代理,处理管理端发送的请求 |
可以看到,他将我们的api
字符串给替换成了http://localhost:8080/admin/
同时我们可以使用nginx的负载均衡来控制服务器的压力
1 | upstream webservers{ |
比如我们启动了俩个服务,一个是8080端口,一个是8088端口,我们可以通过这个配置来控制他们的压力,这个配置的意思是,我们的请求有90%的概率会被转发到8080端口,10%的概率会被转发到8088端口。默认是没有weight的,也就是说默认是1:1的概率。以下是我们负载均衡的一些配置属性
登录密码添加md5加密
我们先将数据库的密码进行替换
然后在校验密码的时候也将前端传过来的密码进行md5加密,然后将密文进行比对
导入接口文档
课程中直接是yapi导入的,我没那玩意,我就用apifox导入了,操作也很简单,导入文件,选择yapi格式,然后导入json即可,json从课程中的资料中找到,路径和我之前的都是一样的,在day1中。
Swagger
Swagger的引入
导入knife4j的maven坐标
1
2
3
4<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
</dependency>在配置类中加入knife4j的相关配置
这里定义文档名称和需要扫描的包1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19/**
* 通过knife4j生成接口文档
* @return
*/
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;
}设置静态资源映射,否则接口文档页面无法访问
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的常用注解
我在项目中添加了这些注解
在controller中给class添加了@Api
注解
在方法上添加了@ApiOperation
注解
在实体中添加了@ApiModel
注解,在实体中添加了@ApiModelProperty
注解
最终这些注解会在接口文档中显示出来
结语
本篇文章就到这里了,趁着大小周的双休日稍微学一点,继续学习,尽快搞定学习java小目标。