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就可以只要涉及修改都可以使用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript 前端枚举库 js-enumerate

JavaScript 前端枚举库js-enumerate 1. 安装1.1 NodeJS1.2 Bower 2 使用2.1 constructor构造函数2.2 register全局注册2.3 用法示例2.4 前端组件中使用2.5 其他扩展用法2.6 内置属性2.7 Enum object API2.8 其他注意事项 3. 推荐 Enum is a javascript enumeration module. It …

4.18.2 EfficientViT:具有级联组注意力的内存高效Vision Transformer

现有Transformer模型的速度通常受到内存低效操作的限制,尤其是MHSA(多头自注意力)中的张量整形和逐元素函数。 设计了一种具有三明治布局的新构建块,即在高效FFN(前馈)层之间使用单个内存绑定的MHSA&#x…

面向初学者的网络安全(二)

原文:annas-archive.org/md5/8570b4b9b47974c7302ce023e1eb9bc8 译者:飞龙 协议:CC BY-NC-SA 4.0 九、攻击和防御方法的演变 当我写下这本书的第一版时,网络安全只是网络安全专家和精明的高管感兴趣的话题。这本书是为了让任何人…

数组、链表、集合、table、map、二叉树、索引、数据库

数据结构:帮助数据快速读写的一种结构模型,数据库是 系统文件索引(索引是各种数据结构提高数据检索以平衡数据读写速度,系统文件是存储用户真正的数据,比如业务表数据、文件、图片等等) 1.数组&#xff1a…

本地缓存数据存入文件中

文章目录 演示代码本地缓存数据存入文件从文件提取数据到本地缓存工具类 实战初始化操作执行 本地缓存数据存入文件 的线程任务持久化工具类 演示代码 本地缓存数据存入文件 public static void testQ15() {LinkedBlockingDeque<ConcurrentHashMap<String, ConcurrentHa…

【STM32HAL库】外部中断

目录 一、中断简介 二、NVIC 1.寄存器 2.工作原理 3.优先级 4.使用NVIC 三、EXTI 1.简介 2.AFIO&#xff1a;复用功能IO&#xff0c;主要用于重映射和外部中断映射配置​编辑 3. 中断使用 4.HAL库配置使用 一、中断简介 中断的意义&#xff1a;高效处理紧急程序&#xff0c;不会…

[C++初阶]一些类的选择题

本篇就是举例一些类的选择题,用于提高大家的基础,便于记忆。 1.有一个类A&#xff0c;其数据成员如下&#xff1a; 则构造函数中&#xff0c;成员变量一定要通过初始化列表来初始化的是&#xff1a;&#xff08; &#xff09; &#xfeff;class A { ... private: int a; publi…

SPRD Android 14 通过属性控制系统设置显示双栏或者单栏

SPRD Android 14 通过属性控制系统设置显示双栏或者单栏 第一步 确认有添加静态库第二步 验证第三步 修改源码在合适的地方配置 ro.product.is_support_SettingsSplitEnabled 即可。第一步 确认有添加静态库 --- a/packages/apps/Settings/Android.bp +++ b/packages/apps/Set…

Uniapp 报错Uncaught URIError: URI malformed

场景&#xff1a;数据中有url,或者别的不规则的字符&#xff0c;就会报错 解决办法&#xff1a; 1、将复杂参替换 //传复杂参替换encodeContent(key) {const encodeArr [{code: %,encode: %25}, {code: ?,encode: %3F}, {code: #,encode: %23}, {code: &,encode: %26},…

php反序列化逃逸

php反序列化逃逸 逃逸是php中反序列化时的恶意利用&#xff0c;以ctf为例演示 第一段演示 逃逸为ctf反序列化的内容&#xff0c;主要是对序列化对象进行过滤&#xff0c;其中替换串长度不一致&#xff0c;造成字符逃逸。攻击者可以构造恶意的payload&#xff0c;改变对象中的…

MATLAB循环语句

MATLAB 循环语句 在某些情况下&#xff0c;您需要多次执行一个代码块。通常&#xff0c;语句是按顺序执行的。首先执行函数中的第一条语句&#xff0c;然后执行第二条&#xff0c;依此类推。 编程语言提供了各种控制结构&#xff0c;允许更复杂的执行路径。 循环语句允许我们…

猫头虎分享已解决Bug || **Error: ‘Promise‘ is undefined**

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

3.8设计模式——State 状态模式(行为型)

意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 结构 Context&#xff08;上下文&#xff09;定义客户感兴趣的接口&#xff1b;维护一个ConcreteState子类的实例&#xff0c;这个实例定义当前状态。State&#xff08;状态&#xff09;定义…

4 -25

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

冯诺依曼体系结构再谈操作系统

前言 前面对基本的指令、权限以及环境开发的基本工具进行了介绍&#xff0c;本期开始我们将进入系统的的学习&#xff0c;例如我们常听的进程等&#xff0c;在进入进程的学习前我们先要铺垫一下&#xff0c;所以本期我们先来介绍一下冯诺依曼体系结构和再谈操作系统&#xff0…

30 番外5 AHK语法应用实战

番外5 AHK语法应用实战 ahk是一种极其轻量,极其易上手,极其方便好用的脚本语言,对于没有编程基础的人来说,可以轻松掌握. 作为一个强大轻量的工具,ahk主要提供了热键宏操作. 什么是热键宏?简单的理解,就是自定义快捷键. AHK使用场景举例 ahk到底有什么用处呢? 1.把一个按键映…

关于TrAXFilter类在动态加载的利用思考以及如何无视构造器获取对象

第一个问题 今天在又看cc3的时候想不通一个问题&#xff0c;就是关于TrAXFilter这个类&#xff0c;我们看到这个类的构造方法 public TrAXFilter(Templates templates) throwsTransformerConfigurationException{_templates templates;_transformer (TransformerImpl) tem…

DRF案例之车厂API

DRF案例之车厂API 目录 DRF案例之车厂API需求urls.pymodels.pyviews.pyMySerializers.pyMyValidate.pyMyFilter.pyMyPagination.pysettings注册自定义类国际化输出 需求 定义车型表(CarModel)&#xff0c;车厂表(CarFactory)&#xff0c;经销商表(Distributor)一个车厂可以生产…

做亚马逊店铺怎么解决网络问题?

在全球电商市场迅速崛起的背景下&#xff0c;亚马逊已成为众多商家拓展海外市场的首选平台。然而&#xff0c;网络问题始终困扰着亚马逊商家&#xff0c;若不能有效解决&#xff0c;不仅影响工作效率&#xff0c;更可能面临店铺被封禁的风险。本文将详细介绍亚马逊店铺运营遇到…

C++_跨平台编译_cmakefile中_添加内容

C_跨平台编译_cmakefile.txt中_添加内容, 包含 cmakefile.txt中 1. 系统架构(aarch64) 2. gcc g编译器位置 3. 架构指定: march 4. 你的root一些基础的lib, bin文件路径 (YOUR_SYSROOT) # 在x86上, 编译linux系统下 aarch64版本的库文件: SET(CMAKE_SYSTEM_NAME Linux) SE…