diff --git a/尹顺宇学习笔记/尹顺宇11.04作业/11.03-11.04学习笔记.md b/尹顺宇学习笔记/尹顺宇11.04作业/11.03-11.04学习笔记.md new file mode 100644 index 0000000..1bef514 --- /dev/null +++ b/尹顺宇学习笔记/尹顺宇11.04作业/11.03-11.04学习笔记.md @@ -0,0 +1,192 @@ +# SpringBoot练习—苍穹外卖为例 + +## 1.前后端联调 + +​ nginx反向代理,将前端发送的动态请求由nginx转发到后端服务器 + +![1762146873365](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762146873365.png) + +### 1.1 nginx反向代理的好处: + + 1.提高访问速度:可以在nginx层做缓存,我们如果请求同样的接口地址,就无需再请求后端接口,直接在nginx这把缓存数据响应给前端 + + 2.进行负载均衡 + +![1762147027004](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762147027004.png) + +3.保证后端服务的安全,后端部署在公司内网,不对外开发,外部请求到达nginx服务器,在转发到内网的后端进行响应。 + +### 1.2nginx反向代理的配置方式 + +![1762147338673](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762147338673.png) + +### 1.3nginx负载均衡的配置方式 + +![1762147858798](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762147858798.png) + +负载均衡策略: + +![1762147974411](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762147974411.png) + + + +## 2.导入接口文档 + +apifox:![1762150565908](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762150565908.png) + +### 2.1Swagger + +使用Swagger你只需要按照它的规范去定义接口,及接口相关信息,就可以生成接口文档,以及在线调试页面。 + +Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。 + +**辨析Swagger和Yapi:** + +Yapi是设计阶段使用的工具,管理和维护接口。 + +Swagger是开发阶段使用的框架,帮助后端开发人员做后端的接口测试。 + +#### 2.1.1Swagger常见注解 + +![1762154731220](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762154731220.png) + +![1762154779037](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762154779037.png) + +![1762154794204](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762154794204.png) + +## 3.其他准备 + +### 3.1.返回值封装 + +主要为三部分:code,data,msg + +code就是状态码,不同的数字代表不同的状态,前端要根据后端的code做出对应的提示信息,这一项必须要有 + +data,就是返回数据,一般在查询操作时会用到,把后端查询到的数据保存到data响应给前端 + +msg就是文字信息,返回给前端一些提示 + +### 3.2.什么时候使用DTO,什么时候使用Entity + +以登录举例,登录前端提交来的数据,只是实体类对应的属性的一部分,也就是他们差别较大时,建议使用DTO来封装数据 + +![1762156175598](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762156175598.png) + +### 3.3.idea连接数据库设置细节 + +![1762159640391](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762159640391.png) + +设置完这个之后,要打开setting,把Global SQL Dialect和Project SQL Dialect设置为MySQL + +![1762159662456](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762159662456.png) + + + +## 4.功能点一:完善登录功能,对密码进行MD5加密 + +数据库存储的密码存储的是md5加密之后的,在EmployeeServiceImpl中,对获取到的前端输入密码进行md5加密,然后再进行和数据库比较 + +![1762150776593](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762150776593.png) + + + +## 5.功能点二:新增员工功能实现 + +![1762160506162](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762160506162.png) + +![1762160526915](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762160526915.png) + +![1762160546636](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762160546636.png) + +![1762160555060](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762160555060.png) + +使用swagger一开始报401 + +原因:因为项目有jwt,没有token不能执行成功 + +在swagger的文档管理模块下添加全局参数设置,设置token,token的值通过接口调试登录功能的返回值里获取 + +![1762160645659](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762160645659.png) + +![1762160652664](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762160652664.png) + +### 5.1如何使用异常处理器捕获异常 + +当插入重复用户时,报以下错误: + +![1762224327352](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762224327352.png) + +接口测试提示以下信息: + +![1762224409435](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762224409435.png) + +根据报错的异常类,配置该异常类的捕获方法,当出现该异常,并且判断如果错误信息里含有Duplicate entry,则为用户已存在的报错,写出下列msg提示信息返回。 + +![1762224124912](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762224124912.png) + +再次接口测试: + +![1762224609424](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762224609424.png) + +msg里已出现对应的提示信息。 + +### 5.2了解JWT流程 + +![1762224879197](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762224879197.png) + +在新增的时候,想获取jwt里的用户id, + +同一个请求,它的拦截,调用方法等等,都是在一个线程里,(可以通过在登录,jwt验证,新增员工代码上加入System.out.println("当前线程的id:"+Thread.currentThread().getId());进行验证) + +ThreadLocal就是Thread的局部变量,ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离效果,只有在线程内才能获取到对应的值,线程外不能直接访问 + +![1762225818743](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762225818743.png) + +## 6.功能点三:查询员工分页 + +### 6.1分页功能实现 + +![1762235896300](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762235896300.png) + +![1762235920529](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762235920529.png) + +![1762235940783](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762235940783.png) + +![1762235954789](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762235954789.png) + +![1762236062035](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762236062035.png) + +### 6.2如何调整日期格式 + +方法一:在属性上加注解,对日期格式化 + +![1762236272112](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762236272112.png) + +![1762236376127](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762236376127.png) + +方法二:在WebMvcConfiguration中扩展SpringMVC的消息转换器,统一对日期类型进行格式化处理 + +![1762237587727](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762237587727.png) + +## 7 .功能点四:启用禁用员工 + +![1762240010155](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762240010155.png) + +![1762240022169](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762240022169.png) + +![1762240031238](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762240031238.png) + +![1762240051008](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762240051008.png) + +![1762240063086](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762240063086.png) + +## 8.功能点五:编辑员工 + +![1762243516808](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762243516808.png) + +![1762243528673](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762243528673.png) + +![1762243555555](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762243555555.png) + +![1762243565057](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1762243565057.png) + diff --git a/尹顺宇学习笔记/尹顺宇11.04作业/11.03-11.04学习笔记.pdf b/尹顺宇学习笔记/尹顺宇11.04作业/11.03-11.04学习笔记.pdf new file mode 100644 index 0000000..e33c4f5 Binary files /dev/null and b/尹顺宇学习笔记/尹顺宇11.04作业/11.03-11.04学习笔记.pdf differ diff --git a/尹顺宇学习笔记/尹顺宇11.04作业/尹顺宇11.04夺宝奇兵之夺宝利剑学习.docx b/尹顺宇学习笔记/尹顺宇11.04作业/尹顺宇11.04夺宝奇兵之夺宝利剑学习.docx new file mode 100644 index 0000000..174de2f Binary files /dev/null and b/尹顺宇学习笔记/尹顺宇11.04作业/尹顺宇11.04夺宝奇兵之夺宝利剑学习.docx differ diff --git a/尹顺宇学习笔记/尹顺宇11.04作业/尹顺宇11.04学习总结.docx b/尹顺宇学习笔记/尹顺宇11.04作业/尹顺宇11.04学习总结.docx new file mode 100644 index 0000000..c8c84c6 Binary files /dev/null and b/尹顺宇学习笔记/尹顺宇11.04作业/尹顺宇11.04学习总结.docx differ