[苍穹外卖]2025最经典JAVA项目 史上最精炼详细教程上
这篇文章是博主第二次学习并记录Nginx部署和前后端联调的教程笔记。文章重点讲解了Nginx的配置、代码初始化、数据库设置、前后端联调步骤,以及JWT权限认证的实现。博主结合实际操作,分享了在开发过程中遇到的问题和解决方案,如端口冲突、密码加密、全局异常处理、分页查询和员工信息修改等。文章还提到了使用工具如Apifox进行接口测试,并推荐了一些实用插件。由于是学习笔记,部分知识点被简化,更详细的内
本教程笔记是博主第二次想重新考自己敲出来,同时有过一次学习经验,所以本章会精简化,着重一些当时模糊的知识点,同时以实操记录关键处理部分,会加如一些自己对功能的理解,本章还在持续更新.
开启敲代码前的准备?
1.把打包好的nginx放到没有中文的路径-->什么是nginx?(简单理解)
2.把代码从gitee下拉过来(因为我是第二遍所以就直接用重启一个新的分支了,大家要用可以拉取我的仓库,也可以按照视频资料的文件)
3.数据库,把数据库的文件给放到datagrip里面运行.
4.前后端联调
Day1
1.1前端打包
这个打包好要放到没有中文的路径



把监听端口可以改成81,我这里因为81是点评在用

这里配置的是nginx的监听端口,nginx在81号端口上监听网页端,最后是将数据传入8080端口的服务器端
80经常会被占,新手上手不容易发现这个问题.
什么是nginx?--->大家可以去看看我的另一篇文章,如果着急速成那就先把上面两步整好.
1.2初始化代码
因为我已经完成一次了,所以我直接就用git开了一个新分支敲,大家不想用视频网盘资料也可以从我的仓库拉取
拉取教学看一看这篇,这里不详细说了


项目一共是这三个
common是一些通用处理
Pojo是贫血对象
server是

包含controller service mapper 对应接受请求 处理逻辑 访问数据库
1.3数据库初始化

直接把这个sql文件丢到

直接运行即可
1.4把数据库的配置填好

yml是配置的文件

这里说明他启用的是dev也就是下面那个文件的--一般项目的配置文件都会有几个,灵活切换

把这里的用户名和密码改成自己的

用maven 重新compile一下


1.5前后端联调
启动niginx 运行程序 到浏览器去请求

双击即可

启动程序
浏览器输入
localhost:81



1.6登录 权限认证JWT
可以尝试一下调试断点,体会一下,前端发起请求在这里,可以看见请求进来的信息

![]()
正常来说前端应该传进来的是json格式的数据,为什么这里用类直接接收了呢?这里就是由springboot处理的?
详细了解看文章->


可以到service层去看一下登录方法的实现

跳转到快捷键是ctrl+b ctrl+alt+b 可以自己多尝试使用

可以看见给token加了一串令牌,再返回给前端
那么这里又有疑问了这个拦截怎么实现的,怎么判断是不是这个用户或者管理员?
这就涉及到这篇jwt的文章了

这里又涉及到 这个封装的工具类 ,一般需要怎么封装,需要进行什么处理.
密码传到后端直接保存数据库太过于危险,所以要给进行加密(项目里面用的MD5加密)
详细讲解MD5以及使用方法我在另一个文章中写

具体步骤:
当前端把password传进来 咱们在service层里面登录部分去修改,同时因为不可逆,所以对比时也要再转换成加密形式的,数据库存的也得是加密形式的.
DigestUitls 类是Spring提供的里面有md5DigestAsHex()方法 传进去参数要求是bytes数组,

找到这个实现类-->login方法

这里的TODO标签就是用来标记没有完成的部分

我输出出来,再把加密后的放到数据库

把这一串放到数据库
e10adc3949ba59abbe56e057f20f883e



如果直接用图形化的别忘记点绿色箭头提交

成功
接口文档部分

这是资料里面的,我准备根据接口文档来开发

请求的话,我是用的apifox 把文件导入到apifox里面
关于接口文档和这些接口相关的api应用,请看这篇文档
新增员工
2025年4月23日
23:08

按照原本视频 先是员工部分
新增员工接口


那么从这一个接口文档可以拿到什么
包括请求路径 方式 格式 参数 返回数据
----分析设计----
一般是对产品原型分析,因为比较直观。思考录入项有没有什么限制。

密码采用默认密码,登录后可以进行修改。
接口定义如下(data一般是查询是会用到,msg一般是出错时会返回消息):

数据库设计如下:

现在员工的controller层搞一个接收


创建对应的dto类来接受请求参数


这个result是一个封装的结果类
这里发现对象类都在着实现接口,



Alt+回车


注意事项:
不应该直接用数字数字,否则会是硬编码,应该使用StatusConstant常量类。
密码用默认密码转换md5然后存进去


测试一下
发现出错了,看了一下报错说的是username为空 --不合理--
发现了

没有赋值过去 0.o


这下好了
----------正常不应该上来就前后端联调这里我再来一份正常用apifox请求--------------


把JWT令牌时间调长一点,每次请求的里面都要带token

打个断点拿一下
eyJhbGciOiJIUzI1NiJ9.eyJlbXBJZCI6MSwiZXhwIjoxNzY2MDEyNDAyfQ.t08VO0erBR7MAcigpDevtQvo4cRZ_cGl8getpk3aW5I

把token放到全局变量

前置url用这个
不知道为什么我前面用localhost不行 (这里后面再调查,一直报404)


这里推荐大家用插件
--------------自己实现不看视频是有点吃力0.o,加油!------------------------
接下来把它完善好
问题1:录入的用户名已存在,抛出异常后没有处理,没处理的话,控制台会抛出错误P19。
用全局的异常处理器sky-server/handler/GlobalExceptionHandler,创建exceptionHandler方法,在方法里添加如下代码:
不使用全局异常处理,就在时不时的进行try catch,
全局异常处理类的实现我单独开一个文章来说明->
这里只看过程



还有id


员工分页查询
2025年9月26日
19:31


先去看看对应的dto类

这里返回数据除了result封装好的类的
code msg date里面还多了-->total 和records

把这个一块放进去
records是一个页的list集合



-----------下面实现逻辑要用到插件PageHelper---------------------------
涉及到这个东西的使用方法,我放在别的文章里说

这个包下,这个包下有page类用来接收,然后start方法会自动进行limit和后续拼接


都是固定用法
然后去实现一下sql语句


找到对应的xml文件

在EmployeeMapper.xml中编写SQL语句,limit不用我们手写,pagehelper会自动帮我们追加拼接,order by是排序条件:

这里的写法和思路-------------之前是跟着视频没想太多--------这次自己写很多地方都很纳闷----------->思路分析放另一篇文章里


测试出问题

找到问题了返回

这个才对,前面打成pageResult了


List<员工>才对



服了自己了,把返回值从srvice开始把Employee 用代码补全成了PageResult {-_-}

ok成功了

前后端联调发现时间格式有问题
回去看了一下教程-发现两种解决方法

方法1:

才发现项目已经预留好了这个

OK了
方法2:


添加一个这样的方法

在这个类中有对应的格式化方法
关于日期格式化--->详细看这篇文章

提交一下

再推送
启用禁用员工账号
2025年9月27日
19:36



这里带着参数进来


接收status和id然后去根据id修改他的状态

取的是路径参数,加注解@PathVariable,如果和路径参数不同名,就要加括号双引号指明取的是哪个路径参数@PathVariable("status") ;如果同名,就不用加





直接alt加回车快速生成

先写出框架
这里要用到<set> 和<if>
详细写法逻辑放到别的文章,这里放成果

注意这里mybatis错了,后面更改
编辑员工
2025年9月27日
20:12


这部分可以用刚刚写好的sql

只需要修改部分字段即可
然后这里还需要实现一个查询接口根据id,查询回显,然后修改


看一下传参在请求路径里面

无脑操作了


但是要注意不要把密码传回来



直接一句话
测试一下

ok点进修改有信息了
再接着实现修改接口




直接用之前的修改

修改一下手机号和账号

ok报错了
sql语句的问题,我看看

先写大体框架的时候,忘记把where id判断给整下去了

绿了<0.O>

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)