当前位置: 首页 > news >正文

项目实战——苍穹外卖

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

相关文章:

  • 基于STM32、HAL库的CH224Q快充协议芯片简介及驱动程序设计
  • 关于“网络编程“组件之 “Buffer“
  • Python中的数值运算函数及math库详解
  • 【vant 手机端封装表格】
  • C# virtual 和 abstract 详解
  • Android 中如何配置 targetSdk 值
  • 操作系统 4.1-I/O与显示器
  • MySQL 进阶 - 2 ( 15000 字详解)
  • 使用opentelemetry 可观测监控springboot应用的指标、链路实践,使用zipkin展示链路追踪数据,使用grafana展示指标
  • 2025年- H7-Lc114-15.三数之和(双指针)--java版
  • oracle update 原理
  • C++的inline函数
  • 如何用MDM批量配置和管理TV Box(机顶盒)?
  • E8流程多行明细行字符串用I分隔,赋值到主表
  • 记一次api接口出现重复请求的处理过程
  • 使用人工智能大模型腾讯元宝,如何免费快速做高质量的新闻稿?
  • 【 vue + js 】引入图片、base64 编译显示图片
  • 项目日志配置模板示例
  • python的多线程和多进程程序编程
  • 语音识别——根据声波能量、VAD 和 频谱分析实时输出文字
  • 流程图 网站/网站收录批量查询
  • 菠菜网站怎么做排名/永久免费不收费的污染app
  • 做销售的网站/企业品牌策划
  • 长沙有哪些网站建设公司好/谷歌广告代运营
  • 施工企业资质查询官网/windows优化大师卸载不掉
  • 公司在线起名免费网/广告投放优化师