项目实战——苍穹外卖
1.软件开发整体介绍
gitignore:忽略的,无需管理的文件或文件夹
*.iml:忽略所有.iml后缀的文件
**/test/:忽略test文件夹
基于Git来提交推送代码
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。很多优秀的代码以及各种框架源码都存放于github当中!
gitee
(中文名:码云 ,原名Git@OSC
)是开源中国推出的基于git
的代码托管服务。
国内访问GitHub
速度比较慢,如果想托管自己的代码到云端,gitee
是个不错的选择,华为的鸿蒙2.0
源码也是放在gitee
上的。
创建git仓库:create git repository
提交
小错误
起因是启动后报错
org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
上网搜索知道应该是编码问题,按照修改编码,但是仍然不好用。
最后采用ai方法,干脆直接在配置文件中直接加上编码方式,结果可以跑起来了。
nginx反向代理(实质就是地址替换拼接)
将/api/替换为http://licalhost:8080/admin/,再拼接后面的employee/login形成最终的访问地址
nginx负载均衡及其策略
这里的两个地址通过负载均衡使用比例将会为9:1(weight),默认是轮询,即你一次我一次,很平均,实现了均衡
明文加密(将数据库中的明文密码通过md5加密,防止泄露后信息被盗用)
既然数据库的明文都加密了,在用Java代码进行数据比对时,也要将前端提交的明文密码加密处理后再跟数据库进行比对
TODO:未来还需要进行完善的部分,可以写下后在底部快速定位
小问题
在进行明文加密处理时,发现即使增加了对Java获取后的密码进行加密,但是和数据库比对仍然不一致,通过debug调试发现,Java获取的密码确实是md5加密了,但是数据库的密码没有进行加密,就导致两者不可能比对成功,于是更改数据库为加密后的密码,比对成功。
比对成功,没有执行if条件中的抛出异常指令
debug步骤
1.运行debug,点击小虫子按钮
2.打断点
3.到前端执行
4.到代码处查看
开启驼峰命名(保证能够识别下划线和驼峰命名是同一个属性:getName与get_name)
接口文档(请先启动项目)
输入网址:localhost:8080/doc.html
线程:客户端发起的每一次请求都对应单独一个线程
添加了三个位置:
拦截器方法、controller下的save方法和接口下的save方法中,于是打印三次线程id
当再次提交时,会换成另一个线程id【每一次请求都是单独的一个线程】
希望查看函数得到的值,可以选中右键,选择计算
动态拼接分页查询的两个参数limit0,10:从第一条开始,查询之后的10条
前提是需要在pom文件中引入依赖的插件pageHelper
错误码401:jwt令牌校验不通过
可能是有效期过时了(两个小时),需要重新员工登录生成新的令牌并配置到头上
需要注意:将分页的标签页叉掉,即关闭再重新打开刷新
日期时间的正确显示
格式的转换
对象转化器JacksonObjectMapper
基于jackson将Java对象转为json,或者将json转为Java对象 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象].addDeserializer* 从Java对象生成JSON的过程称为 [序列化Java对象到JSON].addSerializer
启用禁用员工状态开发步骤
1.按照接口文档,知道需要传两个参数,一个请求参数id,一个路径参数status(因为在路径的最后有{status},是需要传值的)
2.给出框架,函数名为启用禁用员工
3.给出参数,两个参数,分别为路径参数status,和请求参数id
4.给出路径与注解,按照文档要求,post方法就用PostMapping,且最前面的@RequestMapping注解已经给出“/admin/employee”路径,所以@PostMapping注解只需要补全剩余路径(“/status/{status}”)即可。
@ApiOperation是用来显示测试前端的,里面的文字对应菜单栏的显示
5.日志打印两个参数信息,方便调试
6.调用Service层方法,并在Service层定义该方法(alt+enter快速在Service层构建)
7.找到实现类,点击Service层刚快速生成的方法旁边的绿圈I,到ServiceImpl实现类中
8.在实现类中定义方法、对象并传进去,注释部分为另一种写法,功能相同
9.接下来定义update方法,光标停留,并alt+enter,到EmployeeMapper层
10.在mapper的xml文件中编写动态SQL语句
至此代码完成,开始执行功能,希望将数据库中的id为4的status从0设置为1
11.在Controller的startorStop方法的日志处打断点,并启动debug(注意是debug)
12.在测试接口文档中给出需要修改的参数值(id为4,status修改为1),然后点击发送。(注意token是否过期,过期401就重新通过login测试发送,得到新的jwt令牌校验)
13.debug得到相应,且数据正确,单步执行后放行
14.回看数据库,刷新后id为4的status值从0变为1,成功!
通过前后端联调的模式查看功能的实现
15.之前程序不要关闭、到前端,登录后,到员工管理界面,选择禁用id为1的员工,即id为4的员工的status将由1变成0,目前账号状态为启用状态,即status=1
16.debug得到相应
17.前端页面得到修改(由启用变成禁用)status修改为0