Java苍穹外卖01-开发环境搭建(Git、nginx)-Swagger-员工管理

一、开发环境搭建

1.项目架构

2.Git版本管理

在IDEA中可以一键搭建并commit,当Git远程仓库搭建后就可以push

3.前后端联调

Builder注解:

加了注解后就可以通过这样的方式创建对象

接收传入的是dto对象,传出去的对象为vo对象

4.nginx反向代理

对于第一条:请求nginx的时候,在nginx可以作缓存,如果请求同样接口地址,就无需再请求真正后端程序,在nginx处就将缓存数据返回给前端。

对于第二条:当有大量请求的时候nginx就可以将请求分配到多台服务器上。

对于第三条:前端不直接访问到后端服务器,可以保证安全

配置:(nginx.conf)

upstream中配置的就是集群中服务器的ip

负载均衡有不同策略,不指定就是默认轮询

5.完善登录功能

只能从左到右,不能解码,想要比对需要将密码再次MD5加密后进行比对

二、导入接口文档

1.前后端分离流程

2.Swagger

使用方式:

配置是在server模块中的config包中

basePackage是扫描接口的包有哪些,不能写错了

没有设置静态资源映射,网页就会以为是动态请求某个controller

运行后,可以登录localhost:8080/doc.html,可以查看接口文档

常用注解:

加上注解信息会在swagger静态页面打开后会有相应的信息便于查看接口文档

三、新增员工

1.需求分析

登录后进行密码修改

admin是来区分管理端和用户端

2.代码开发

controller:

service:

mapper:

3.测试:

在接口文档测试:
记得新增token的全局参数,不然报错

4.代码完善

当新增员工已存在时:报下面的错误,要给前端抛出相应的信息

在异常处理器中要捕获异常处理:

第二个问题:

如何动态获得登录用户的ID

登录后会生成JWT令牌给前端,在后续请求中token会携带JWT令牌,在拦截器中会进行拦截,如何传递JWT令牌

ThreadLocal

一次请求就是一个线程,可以有一个空间,存储需要的值

定义一个含ThreadLocal成员变量的静态方法类:

四、员工分页查询

1.需求分析

2.代码开发:

controller:

service:

注意这里的:PageHelper插件可以让在写SQL语句的时候不用加limit关键字语句。
实现原理:它的startPage方法将传入的页码和每页记录数传进去,其中有个setLocalPage会将这些信息存储到一个ThreadLocal对象中去,然后在分页查询之前通过这个对象将页码记录数取出来并动态把limit关键字拼进去,将页码和每页记录数算出来拼进去。

mapper:

xml文件:

3.功能测试

操作时间格式不太对

4.代码完善-消息转换器

SpringMVC是SSM框架中整个应用程序与用户交互的前端接口,可以接受用户请求并根据配置映射到相应的controller中去;可以将请求参数绑定到Java对象中去,使用消息转换器可以将不同文件序列化成Java对象;其还有着拦截器和全局异常处理器的作用

通过继承WebMvcConfigurationSupport这个类,就可以自定义MVC中的一些配置。在这里就创建了消息转化器对象并为其添加了对象转换器,其中包含了对LocaDateTime,LocalDate,LocalTime数据的格式。然后添加到converts中的0位置后就可以统一使用这些格式返回给前端。

五、启用禁用员工账号

1.需求分析

2.代码开发

对于对数据进行操作的请求不需要返回Result的泛型,而查询类似的需要返回

controller:

service:

这里可以使用builder方法构造对象。

mapper:

xml映射文件:

注意呀:大括号以及,动态会自动删除,

parameterType是指传入的参数类型,resultType指的是传出的参数类型,这里是传入employee Java对象然后对其指进行提取所以是parameterType。貌似可以不设置,会自动判断。

这里使用动态SQL的原因在于,虽然这里只需要修改status可以通过注解,但是以后如果涉及到修改员工属性的操作可以直接使用这个方法,动态要修改的值。

六、编辑员工

1.需求分析

编辑员工需要回显员工信息,之后填写新信息后进行信息的修改所以需要两步

2.代码开发

根据id查询员工:

controller:

service:

 

这里设置密码为****是因为编辑员工信息不需要密码,进一步保护

mapper:

修改员工信息:
controller:

service:

mapper:
调用启用禁用员工账号中编写的update方法,因为其采用了动态SQL就可以只要涉及修改都可以使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/573732.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java操作 elasticsearch 8.1,如何实现索引的重建?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

网络协议深度解析:SSL、 TLS、HTTP和 DNS(C/C++代码实现)

在数字化时代,网络协议构成了互联网通信的基石。SSL、TLS、HTTP和DNS是其中最关键的几种,它们确保了我们的数据安全传输、网页的正确显示以及域名的正常解析。 要理解这些协议,首先需要了解网络分层模型。SSL和TLS位于传输层之上&#xff0c…

2000-2022年各区县农产品产量数据

2000-2022年县域农产品产量数据 1、时间:2000-2022年 2、指标:统计年度、县域名称、所属地级市、所属省份、地区编码ID、县域代码、产品种类或名称、单位、产量、 3、来源:统计局、县域统计年鉴、各区县政府官网 4、范围:具体…

网络编程——TCP的特性之自动重传/流量控制/拥塞控制,一篇说清楚

文章目录 1. ARQ自动重传协议1.1 停止等待ARQ1.2 连续ARQ1.3 总结 2. TCP的流量控制3. TCP的拥塞控制3.1 慢开始算法3.2 拥塞避免算法3.3 快重传算法3.4 快恢复算法 1. ARQ自动重传协议 自动重传请求(Automatic Repeat-reQuest),通过使用确认…

创新与乐趣的融合 —— 探索我们独家录音变音芯片在学舌玩具领域的应用

一:概述 学舌玩具,又称作复读玩具或模仿玩具,是一类设计用来录制人声并重复播放的互动式玩具。这类玩具以其能够模仿人类语音的特性而受到小朋友和宠物主人的喜爱。这些玩具通常具有以下特点和功能: 1. 录音和播放功能&#xff…

【C++航海王:追寻罗杰的编程之路】C++11(二)

目录 C11(上) 1 -> STL中的一些变化 2 -> 右值引用和移动语义 2.1 -> 左值引用和右值引用 2.2 -> 左值引用与右值引用比较 2.3 -> 右值引用使用场景与意义 2.4 -> 右值引用引用左值及其更深入的使用场景分析 2.5 -> 完美转发 C11(上) 1 -> STL…

4 -25

1 100个英语单词两篇六级阅读 2 cf补题; 3 仿b站项目看源码 debug分析业务。 上了一天课,晚上去健身。 物理备课,周六去上课腻。 五一回来毛泽东思想期末考试,概率论期中考试。

轻松搭建MySQL 8.0:Ubuntu上的完美指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 轻松搭建MySQL 8.0:Ubuntu上的完美指南 前言脚本编写脚本实现部署过程参数成功页面 彩蛋坏蛋解决方法 前言 在数字化时代,数据就像是我们的宝藏,而MySQL数据库就是…

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Text Edit的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 输入类控件 | Text Edit的使用及说明 文章编号&#xff…

【题解】牛客挑战赛 71 - A 和的期望

原题链接 https://ac.nowcoder.com/acm/problem/264714 思路分析 快速幂求逆元 费马小定理: a MOD − 1 ≡ 1 ( m o d M O D ) a^{\text{MOD}-1} \equiv 1 \pmod{MOD} aMOD−1≡1(modMOD),可以转换为 a ⋅ a MOD − 2 ≡ 1 ( m o d M O D ) ① a \cd…

4.24总结

对部分代码进行了修改,将一些代码封装成方法,实现了头像功能,通过FileInputStream将本地的图片写入,再通过FileOutputStream拷贝到服务端的文件夹中,并将服务端的文件路径存入数据库中

Linear Blend Skinning (LBS)线性混合蒙皮

LBS是CG的基础概念之一。 Linear Blend Skinning: linearly blend the results of the vertex transformed rigidly with each bone. LBS:线性地混合顶点根据每个骨骼的刚性变形结果。 这个场景应用在哪里呢? 假如我们重建好一个人体,现在用…

水位监测识别摄像机

水位监测识别摄像机是一种利用人工智能技术进行水位监测的智能设备,其作用是监测水体的水位变化并识别潜在的水灾危险,以提供准确数据和及时预警,帮助保护人民生命财产安全。这种摄像机通过高清摄像头实时捕捉水体的图像,然后利用…

Coursera: An Introduction to American Law 学习笔记 Week 03: Property Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 03: Property LawKey Property Law TermsSupplemental Re…

【yolo算法道路井盖检测】

yolo算法道路井盖检测 数据集和模型yolov8道路井盖-下水道井盖检测训练模型数据集pyqt界面yolov8道路井盖-下水道井盖检测训练模型数据集 算法原理 1. 数据集准备与增强 数据采集:使用行车记录仪或其他设备收集道路井盖的图像数据。数据标注:对收集到…

如何提交已暂存的更改到本地仓库?

文章目录 如何提交已暂存的更改到本地Git仓库?步骤1:确认并暂存更改步骤2:提交暂存的更改到本地仓库 如何提交已暂存的更改到本地Git仓库? 在Git版本控制系统中,当你对项目文件进行修改后,首先需要将这些更…

大学生在线考试|基于SprinBoot+vue的在线试题库系统系统(源码+数据库+文档)

大学生在线考试目录 基于SprinBootvue的在线试题库系统系统 一、前言 二、系统设计 三、系统功能设计 试卷管理 试题管理 考试管理 错题本 考试记录 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#…

valgrind,memcheck的使用

一,valgrind介绍 ​ valgrind是一个开源的,检测内存泄漏的工具,通常在linux下使用,除此之外,他还能检测内存管理错误,线程bug等错误。粗浅的来讲,valgrind由两部分构成,一部分用来模…

每日OJ题_BFS解决拓扑排序③_力扣LCR 114. 火星词典

目录 力扣LCR 114. 火星词典 解析代码 力扣LCR 114. 火星词典 LCR 114. 火星词典 难度 困难 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已…

SpringBoot-无法从static上下文引用同非static方法

1.问题 说明:无法从static上下文引用同非static方法。 2.解决 说明:return后面的语句中,调用的是变量的方法,而不是类型的方法!