- 博客(156)
- 收藏
- 关注
原创 瑞吉外卖项目学习笔记(十三)查询购物车列表、添加菜品到购物车、清空购物车
点击购物车页面右上角的“清空”按钮,可一键清空当前用户的购物车。点击菜品右下角的+号按钮,即可将当前菜品添加到购物车当中。用户登录到系统主页后,自动加载相关数据。
2025-01-07 14:00:00
835
原创 瑞吉外卖项目学习笔记(十二)实现发送验证码到邮箱、手机客户端用户登录
用户输入手机号码,点击“获取验证码”,系统将验证码发送到用户填写的手机上。但由于笔者没有短信网关,所以使用邮箱来替代。咱们就把验证码发送到邮箱即可。
2025-01-07 08:00:00
625
原创 瑞吉外卖项目学习笔记(十)修改套餐、删除套餐、起售和停售套餐
用户点击套餐记录操作栏的“起售”或“停售”按钮,即可起售或停售该套餐;或者用户勾选需要起售/停售的套餐后,点击右上角的“批量起售”或“批量停售”按钮,即可同时起售或停售多个套餐。用户点击套餐记录操作栏的“删除”按钮,即可删除该套餐;或者用户勾选需要删除的套餐后,点击右上角的“批量删除”按钮,即可同时删除多个套餐。在“分类管理”菜单中,进行删除套餐分类时,需要先判断该套餐分类是否已被套餐使用。如果已被使用,则不能删除。自动加载“套餐分类”下拉框,用户可以选择套餐分类,直接使用已经开发好的分页查询分类列表。
2025-01-04 11:29:55
1171
原创 瑞吉外卖项目学习笔记(八)修改菜品信息、批量启售/停售菜品
点击“修改”菜品按钮,进入修改页面,首先需要根据菜品ID查询菜品信息进行数据回显。不仅要返回菜品的基本信息,还要返回菜品的口味配置信息。在“分类管理”菜单中,进行删除分类时,需要先判断改分类是否已被菜品使用。如果已被使用,则不能删除。类型数据的精度丢失问题。(所以根本没必要把ID搞得这么大。指需要修改状态的菜品ID,多个菜品ID时使用英文逗号隔开;大部分数据成功回显,但菜品分类没有成功回显。指需要改到的状态,0表示停售,1表示启售。
2024-12-25 14:38:33
1168
原创 瑞吉外卖项目学习笔记(七)新增菜品、(批量)删除菜品
在“新增菜品”页面,菜品分类是一个下拉框,因此进入该页面后需要向后端发起查询请求。,表示查询第1页,该页显示999999条记录,相当于查出全部;这里可以直接调用菜品/套餐分类的分页查询接口,参数要设置成。的表结构可知,“新增菜品”页面的口味做法配置并不保存在。同样由于精度问题导致删除失败。所以我们新建一个菜品口味关系表。表示查询的是菜品分类。
2024-12-24 10:59:57
1129
原创 瑞吉外卖项目学习笔记(六)分页查询菜品列表、实现图片上传和下载
在菜品列表中,会展示菜品的图片。在新建菜品时,也需要上传菜品的图片,那我们就先来处理图片文件的上传和下载。这两个功能作为公共功能来做。Spring框架在spring-web包中对文件上传进行了封装,大大简化了服务端代码,我们只需要在Controller的方法中声明一个。页面需要展示图片,则需要服务端以流的方式(输出流)将文件写回给浏览器。类型的参数即可接收上传的文件。
2024-12-24 09:25:05
1053
原创 瑞吉外卖项目学习笔记(五)菜品/套餐分类的增删改查
上面的逻辑是直接删除分类,但正确的逻辑是,当菜品分类或套餐分类关联了其他菜品或套餐时,该分类将不允许被删除。这个功能完善先放着,等菜品、套餐的功能完成后再补上。检查后发现前端传递的ID和数据库的ID不一致,这是因为前端JS对Long类型数据丢失精度导致的。
2024-12-23 09:44:42
1145
原创 瑞吉外卖项目学习笔记(四)@TableField(fill = FieldFill.INSERT)公共字段填充、启用/禁用/修改员工信息
前面我们已经完成了对员工信息的添加与修改,在添加/修改员工信息时,都需要设置创建人、创建时间、修改人、修改时间等字段,这些字段不仅员工表有,在未来的菜品表、分类表等其他表中也拥有这些字段。点击“编辑”按钮,页面跳转到修改信息页面,首先需要根据员工ID查询员工信息进行数据回显;从业务角度来说,禁用员工就是把员工的状态改为“禁用”,启用员工就是改为“正常”。的效果,只有在线程内才能获取到对应的值,线程外则不能访问。方法来设置当前线程的局部变量的值(员工ID),然后在。方法中获取当前登录员工的ID,并调用。
2024-12-22 20:15:00
824
原创 瑞吉外卖项目学习笔记(三)过滤器实现登录校验、添加员工、分页查询员工信息
我们希望看到的效果是,只有登录成功了才能看到页面,没有登录成功时则跳转到登录页面。未登录则返回未登录信息,其实是跟前端约定好的。在本项目中,约定好返回信息为。在后端实现该接口:逻辑很简单,只需要删除session保存的员工信息即可。在系统登录后页面的右上角有一个“登出”按钮,用户点击该按钮即可退出登录。是一个普通接口类,用于参数校验的分组。也是可以的,这显然是不合理的。当然也可以自定义其他的约定。目前,如果在浏览器直接访问。要实现这个功能,可以用。
2024-12-22 15:55:36
853
原创 瑞吉外卖项目学习笔记(二)Swagger、logback、表单校验和参数打印功能的实现
Hibernate Validator框架可以以很优雅的方式实现参数的校验,让业务代码和校验逻辑分开,不再编写重复的校验逻辑。可见,请求参数和响应参数成功打印。前端很容易获取到后端的接口,如果有人直接调用接口,就可能会出现非法数据,所以服务端也要数据校验。员工登录时,必须输入用户名和密码,虽然前端JS进行了校验,但对于后端来说,前端传来的数据是不可信的。页面的每个请求都有请求参数和响应参数,如果每个请求都单独打印这些参数,则显得非常冗余。为此我们可以基于注解和切面编程,实现请求参数和响应参数的打印。
2024-12-20 15:00:00
1391
原创 瑞吉外卖项目学习笔记(一)准备工作、员工登录功能实现
2)创建一个SpringBoot工程,在中引入、、、、和的依赖:3)导入前端资源,将静态资源文件放到目录下,并配置资源映射(静态资源可在本文直接下载):4)在配置文件文件中配置端口和数据库连接信息(密码需要换成自己的):5)启动项目,在浏览器访问,就可以看到登录页面:后续根据需要不断定义新的异常代码。3)在类中定义登录方法,实现员工登录功能:4)在Service层具体实现员工登录的具体逻辑:这里再中新定义了两个异常代码:后续就根据这样的方式继续定义。另外在
2024-12-20 07:00:00
596
1
原创 后台管理系统的通用权限解决方案(十七)基于Zuul实现权限校验过滤器
在网关服务的token校验过滤器中,已对前端送过来的token信息进行校验和解析,解析成功后得到了管理员的信息。那么接下来就是对当前请求的权限进行校验,如果该管理员具备该请求的权限,则放行;可见,此时已经通过了权限校验。
2024-11-25 14:00:00
440
1
原创 后台管理系统的通用权限解决方案(十六)基于Zuul实现Token校验过滤器
作为通用权限系统的网关服务,前端的http请求首先需要经过网关服务。认证服务或者其他微服务进行业务处理。可见,token校验过滤器已生效。,再通过网关服务的路由功能转发到。zuul配置的意思是,所有以。为前缀的请求都会被转发到。
2024-11-25 07:00:00
454
原创 后台管理系统的通用权限解决方案(十五)基于注解和切面实现操作日志记录
可见,前端发起请求时,后端都会生成一条操作日志信息记录下来,以方便后期的溯源等。对象并继续设置其他的成功操作信息,随后发布事件。在切面类中定义异常返回通知,在异常返回通知方法。对象并继续设置其他的异常操作信息,随后发布事件。,拦截Controller中添加。中收集操作相关信息封装为。对象并保存到线程容器。,在成功返回通知方法。
2024-11-14 11:12:39
412
原创 后台管理系统的通用权限解决方案(十四)基于JWT实现登录功能
可见,前端已经获取到了用户信息、token信息、以及可使用的权限信息,后续前端向后端发起任何请求时都需要携带token,还可以使用权限信息控制页面的显示。说明:以下代码仅仅是主体代码,其中涉及的实体类、码表、工具类等没有贴出来,完整代码可以在本篇文章中直接下载。:从缓存中获取已经保存好的验证码并进行验证,验证失败则返回登录失败,验证通过则立即从缓存中删除验证码。:根据用户ID查询出该用户可以访问的资源权限,并保存到缓存中,同时返回前端。
2024-11-14 07:00:00
432
原创 后台管理系统的通用权限解决方案(十三)easy-captcha验证码功能
easy-captcha 是生成图形验证码的Java类库,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。至此,验证码功能开发完成,后续用户进行登录时,也需要携带参数key,这样就可以从Redis拿出指定的保存好的验证码进行比对。
2024-11-08 10:55:24
673
原创 localhost和127.0.0.1的异同点
通常认为,localhost和127.0.0.1是等价的,这是从功能上来说的一种观点。因为我们在调试程序时,有时候用来访问本地服务器网页,有时候用来访问,这就是本地服务器的两个不同写法而已,就好比一个网页可以通过域名来访问也可以通过IP来访问一样,localhost代表的是域名,而127.0.0.1则代表IP地址。在windows系统上时,回包则来自127.0.0.1可见操作系统自动将localhost解析为127.0.0.1这个地址。
2024-11-03 14:00:00
373
原创 同一局域网内A主机连接B主机的虚拟机中的服务
两台笔记本电脑在同一个局域网内,其中一台电脑上安装了虚拟机,并在上面部署了web项目,那么如何实现在另一台电脑上使用浏览器访问到虚拟机里面的web页面?1、假设两台电脑为A和B,其中A上安装了虚拟机,我们要实现B通过浏览器访问A上的虚拟机部署的web项目。以上步骤就实现了A上的虚拟机的7180端口和8888端口转达到A主机的7180端口和8888端口。4、使用B主机访问A的7180端口,实际上就是访问A上的虚拟机的7180端口。命令查看A和B的IP地址,查看是否在同一网段。3、A和B之间能不能。
2024-11-03 07:00:00
470
原创 后台管理系统的通用权限解决方案(十二)数据模型、基于SpringCloud和Nacos的后端项目搭建
经过前面11个小节的学习,终于把通用权限系统涉及的技术学习完了。现在,就可以真正开始系统的开发了。
2024-11-02 14:00:00
1838
原创 后台管理系统的通用权限解决方案(十一)SpringBoot的统一异常处理
在实际项目中,不可避免需要处理各种异常。如果每个都单独处理,代码中则会出现大量的代码块,不仅有大量的冗余代码,而且还影响代码的可读性。Spring从3.2版本开始增加了一个注解,它可以与等注解配套使用,可以统一进行异常处理。
2024-11-02 07:00:00
699
原创 后台管理系统的通用权限解决方案(十)如何自定义SpringMVC的参数解析器
/ 此处request对象就是通过Springmvc提供的参数解析器帮我们注入的在上面的saveUser方法中,我们直接声明了一个类型为的参数,这个参数对象可以直接使用,那是因为这个参数对象就是通过Springmvc提供的参数解析器帮我们注入的。同样,如果我们需要使用对象,也可以直接在方法上加入这个参数,此时Springmvc会通过这个参数解析器帮我们注入。在项目开发中我们也可以根据需要自定义参数解析器,需要实现接口:和。当方法返回true时,才会调用方法。
2024-11-01 18:00:00
1413
原创 后台管理系统的通用权限解决方案(九)SpringBoot整合jjwt实现登录认证鉴权
可见,jwt令牌已经生成,且可以成功解析。后续调用服务的其他请求,只需要将该令牌通过请求头传递到后端服务即可。
2024-11-01 13:02:40
797
原创 后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用
HTTP Basic Auth 是一种简单的登录认证方式,Web浏览器或其他客户端程序在请求时,通过HTTP请求头提供用户名和密码。简单点说就是每次请求时都提供用户的用户名和密码。这种方式是先把用户名:密码拼接起来,并将得出的结果字符串用Base64算法编码。例如,提供的用户名是bill,密码是123456,则拼接后的结果就是,然后再将其用Base64编码,得到。最终将Base64编码的字符串通过HTTP请求头发送出去,由服务器解码得到一个由冒号分隔的用户名和密码的字符串。
2024-10-30 14:00:00
849
原创 后台管理系统的通用权限解决方案(七)SpringBoot整合SpringEvent实现操作日志记录(基于注解和切面实现)
除了记录程序运行日志,在实际项目中一般还会记录操作日志,包括操作类型、操作时间、操作员、管理员IP、操作原因等等(一般叫审计)。Spring Event是Spring的事件通知机制,可以将相互耦合的代码解耦。Spring Event是监听者模式的一个具体实现。
2024-10-30 07:00:00
1525
原创 后台管理系统的通用权限解决方案(六)SpringBoot整合Logback实现日志记录
由上图可知,Logback和Log4j都是slf4j规范的具体实现。在程序中直接调用Logback的API其实都是slf4j规范定义好的API,其底层则是真正的日志实现组件—Logback或者Log4j。LoggerAppender和Layout。这三个不同类型的组件一起作用能够让开发者根据消息的类型以及日志的级别来打印日志。
2024-10-29 14:00:00
1214
原创 后台管理系统的通用权限解决方案(五)SpringBoot整合hibernate-validator实现表单校验
早期的网站,用户输入一个邮箱地址,需要将邮箱地址发送到服务端,服务端进行校验,校验成功后,给前端一个响应。有了JavaScript后,校验工作可以放在前端去执行。那么为什么还需要服务端校验呢?因为前端传来的数据不可信。前端很容易获取到后端的接口,如果有人直接调用接口,就可能会出现非法数据,所以服务端也要数据校验。校验参数基本上是一个体力活,而且冗余代码繁多,也影响代码的可读性,我们需要一个比较优雅的方式来解决这个问题。
2024-10-29 07:00:00
777
原创 后台管理系统的通用权限解决方案(四)SpringBoot整合Dozer实现对象属性复制
dozer是用来对两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的调用set和get方法了。
2024-10-28 14:00:00
1083
原创 后台管理系统的通用权限解决方案(三)SpringBoot整合Knife4j生成接口文档
knife4j是为Java MVC框架集成Swagger生成Api文档的,前身是,取名knife4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!
2024-10-28 07:00:00
534
原创 后台管理系统的通用权限解决方案(二)SpringBoot整合Swagger Springfox实现接口日志文档
使用Swagger,我们只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线调试接口等等。这样,在开发项目的新版本或者迭代版本时,只需要更新Swagger描述文件,就可以自动生成接口文档和客户端服务端代码,做到调用端代码、服务端代码以及接口文档的一致性。为了简化Swagger的使用,Spring框架对Swagger进行了整合,建立了项目,后面改成了现在的Springfox。
2024-10-27 14:00:00
1218
原创 后台管理系统的通用权限解决方案(一)如何自定义一个starter?
如何像spring-boot-starter-web一样,自定义并使用一个自己的starter?
2024-10-27 07:00:00
1086
原创 Kafka学习笔记(三)Kafka分区和副本机制、自定义分区、消费者指定分区
Kafka学习笔记(一)Linux环境基于Zookeeper搭建Kafka集群、Kafka的架构Kafka学习笔记(二)Kafka基准测试、幂等性和事务、Java编程操作Kafka轮询策略、随机策略都会导致一个问题,生产到Kafka中的数据是乱序存储的。而按key分区可以一定程度上实现数据有序存储(分区内局部有序),但这又可能会导致数据倾斜,所以在实际生产环境中要结合实际情况来做取舍。
2024-09-30 19:33:18
1601
原创 Kafka学习笔记(一)Kafka基准测试、幂等性和事务、Java编程操作Kafka
Kafka学习笔记(一)Linux环境基于Zookeeper搭建Kafka集群、Kafka的架构在HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源,对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,任意多次请求执行,对资源本身所产生的影响均与一次请求执行的影响相同。实现幂等性的关键就是服务端可以区分请求是否重复,过滤掉重复的请求。唯一标识:要想区分请求是否重复,请求中就得有唯一标识。例如支付请求中,订单号就是唯一标识。记录下已处理过的请求标识。
2024-09-27 20:01:15
1546
原创 Kafka学习笔记(一)Linux环境基于Zookeeper搭建Kafka集群、Kafka的架构
以下是Kafka官网的介绍:Apache Kafka 是一个开源的分布式事件流平台,被数千家公司用做高性能数据管道、流分析、数据集成和关键任务应用程序。超过80%的财富100强公司信任并使用Kafka。发布(写入)和订阅(读取)事件流,包括从其他系统连续导入/导出数据。根据需要持久可靠地存储事件流。在事件发生时或回顾性地处理事件流。
2024-09-27 13:26:36
1268
原创 分布式事务学习笔记(五)微服务实现Seata TCC模式、TC服务器高可用异地容灾
分布式事务学习笔记(一)分布式事务问题、CAP定理、BASE理论、Seata分布式事务学习笔记(二)Seata架构、TC服务器部署、微服务集成Seata分布式事务学习笔记(三)微服务实现Seata XA模式分布式事务学习笔记(四)微服务实现Stata AT模式、Stata Saga模式介绍。
2024-09-18 16:00:00
2229
2
原创 分布式事务学习笔记(四)微服务实现Stata AT模式、Stata Saga模式介绍
分布式事务学习笔记(一)分布式事务问题、CAP定理、BASE理论、Seata分布式事务学习笔记(二)Seata架构、TC服务器部署、微服务集成Seata分布式事务学习笔记(三)微服务实现Seata XA模式。
2024-09-18 10:07:20
1324
原创 分布式事务学习笔记(三)微服务实现Seata XA模式
分布式事务学习笔记(一)分布式事务问题、CAP定理、BASE理论、Seata分布式事务学习笔记(二)Seata架构、TC服务器部署、微服务集成Seata。
2024-09-15 14:00:00
1159
原创 分布式事务学习笔记(二)Seata架构、TC服务器部署、微服务集成Seata
分布式事务学习笔记(一)分布式事务问题、CAP定理、BASE理论、Seata。
2024-09-15 07:00:00
1100
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人