瑞吉外卖实战项目全攻略——第二天秋落雨微凉

该系列将记录一份完整的实战项目的完成过程,该篇属于第二天

案例来自B站黑马程序员Java项目实战《瑞吉外卖》,请结合课程资料阅读以下内容

该篇我们将完成以下内容:

我们的功能完善一般分为三步

但是我们页面的访问并没有设置限制,如果我们直接跳过登陆页面直接输入系统内部页面的url同样可以进入

此外,我们需要在进入页面之前进行判断,那么我们就需要构造一个过滤器或者拦截器,下面我们采用过滤器Filter实现

我们创建一个filter文件夹专门存放filter过滤器

下面我们根据逻辑进行代码实现过程:

我们在系统内部页面中点击新增员工,会跳转到另一个页面,这属于前端工作

接下来我们在页面中填写信息,前端会将这些信息封装起来,以Employee的形式发送给后端端口

我们打开F12,输入数据点击保存后查看数据的请求方式(点击负载,可以查看到填写信息的Employee内容,这里不再展示):

这个请求方式的路径就是我们需要完善的代码URL的路径

现在我们来到IDEA中进行简单的开发:

在介绍下一节之前,我们需要注意:

因此,如果我们连续两次输入ID相同的员工创建,就会报错导致程序出现异常

因此我们需要对异常进行处理,异常处理通常分为两种方法:

第一种方法只能作用在当前情况下,但这种情况并不仅仅在当前情况出现,例如我们修改id如果修改为相同id也会报错

第二种方法可以作用在全局状态下,只要遇见这种问题,我们都会进行处理

因此我们采用第二种方法处理:

我们要将数据库信息通过分页查询的方法查询出来并反馈到页面中

打开负载,查看传递的信息:

还需要注意的是,当我们输入查询信息后,我们会多一个参数name,这个参数也需要进行后台操作:

我们需要注意的是我们采用的是数据库的分页查询,因此我们需要设置一个分页插件来将数据插入

此外我们的代码书写只需要采用page,pageSize查询数据,将name进行近似匹配并当作查询条件即可

首先我们先来实现分页插件:

packagecom.qiuluo.reggie.config;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/***配置MP的分页插件*注意:设置为配置类,使Spring可以搜索到*/@ConfigurationpublicclassMyBatisPlusConfig{//设置为Bean,受管理权限@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){//1.创建一个大型InterceptorMybatisPlusInterceptormybatisPlusInterceptor=newMybatisPlusInterceptor();//2.添加PaginationInnerInterceptor进Interceptor里即可mybatisPlusInterceptor.addInnerInterceptor(newPaginationInnerInterceptor());//3.返回InterceptorreturnmybatisPlusInterceptor;}}接下来再来实现主页面的代码:

当点击我们的员工行列后的启动/禁止,数据库的Status进行转换

我们同样点击后打开F12查看请求URL以及参数:

我们可以看到它将id作为判断员工的标准,将status的值传入便于我们修改

其中前端将修改状态的操作和修改员工信息的操作列为同一个请求,所以我们直接完成修改员工全部信息的操作即可

我们直接书写后端代码:

如果按照上述操作进行,是无法成功修改状态的,但是程序也不会发生报错

这是因为我们的数据库ID中设置长度为19位,但是我们的JS处理器的Long类型只能精确到前16位

这就会导致我们的ID数据的最后三位在传递时变化为000,导致前端传递ID与数据库实际ID无法匹配,无法成功修改

我们采用的处理方法是将服务端传递的JSON数据进行处理,我们希望将Long类型的数据全部转变为String类型,这样就不会省略为0

具体步骤如下:

当我们点击页面员工的编辑后,跳转页面:

这里我们需要注意,我们的数据会直接出现在页面中,这说明我们在点击编辑时,后台会将我们的数据传递给前端,前端才能将数据展现出来

所以我们回到上一步,F12查看操作:

我们会发现,它调用了GET类型的请求,并将我们的id传入,这说明我们需要创建一个路径来根据id获得数据

然后我们点击编辑里的保存,查看F12:

我们会发现,这个路径和我们上一步实现的启动禁用账号的路径相同,所以当我们点击修改后自动调用根据id修改参数的方法

我们只需要实现第一个方法根据ID获得数据即可:

在这里我们会点出该项目目前容易出错的位置

Filter也称之为过滤器,它是Servlet技术中的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源

实现步骤主要分为两步:

所以需要设置一个MyBatisPlus拦截器来完成操作,MyBatisPlus已经为我们简化了步骤,我们只需要将相对应的拦截器添加即可:

packagecom.qiuluo.reggie.config;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/***配置MP的分页插件*/@ConfigurationpublicclassMyBatisPlusConfig{@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptormybatisPlusInterceptor=newMybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(newPaginationInnerInterceptor());returnmybatisPlusInterceptor;}}然后我们就需要注意业务层继承的实现类中所给的方法的参数即可:

但默认的消息转换器有时不能满足我们的需求,例如上述异常处理中,我们希望直接将JSON数据转化为String类型的数据

THE END
1.瑞吉外卖:本项目(瑞吉外卖)是一款专门为餐饮企业定制的软件产品。README Apache-2.0 瑞吉外卖 项目介绍 环境搭建 使用工具 技术选型 ? 功能架构 ? 适用人群 项目使用 使用说明 ? 注意事项 项目开发 开发环境搭建 管理端 后台登录功能开发 后台退出功能开发 完善登录功能 新增员工 分页查询 启用/禁用员工账号 编辑员工信息 ...https://gitee.com/ndelible/ruiji-takeout
1.CAYE咖爷科技完成近亿元新一轮融资美团龙珠领投国产全自动咖啡机品牌 CAYE 咖爷科技完成近亿元融资,由美团龙珠领投,高瓴创投及个人投资者跟投。公司将用于全球化市场开拓和创新研发。https://readhub.cn/topic/8eieSCT2pKY
2.解锁霸王餐专业版,尽享奢华美食之旅营销信息在繁忙的都市生活中,美食不仅是味蕾的慰藉,更是一种生活的艺术。霸王餐专业版,正是为那些热爱美食、追求品质生活的你量身打造的奢华美食体验平台。它不仅仅是一个简单的餐饮推荐应用,而是一场引领你走向全球美食殿堂的奇妙旅程。 霸王餐专业版精心挑选了全球各地的顶级餐厅,从繁华都市的米其林星级餐厅到偏远小镇的地道...https://xcx.jlwebs.cn/yxxx/23413.html
3.瑞吉外卖项目功能全实现及完全代码解析不知迷踪的博客本项目(瑞吉外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括 系统管理后台 和 移动端应用 两部分。其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护。移动端应用主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单等。 https://blog.csdn.net/weixin_59798969/article/details/127335566
4.瑞吉外卖架构说明瑞杰康外卖运营ganmaola的技术博客一. 瑞吉外卖项目总结 1. 后端Controller层返回结果统一封装的R对象 2.定义静态资源映射关系 3. 配置消息资源转换器 3.1 Reggie项目中遇到的问题 3.2 原理 3.3 解决方案 3.4 示例 4. Mybatis-Plus的使用 4.1 基本使用 4.2 Mybatis-plus分页查询组件的使用 4.3 Mybatis-plus 提供的公共字段自动填充功能的使用 4.4...https://blog.51cto.com/u_75269/11484329
5.Alibaba《招待外卖员》论理手机免费在线观看白洁千千瘦子48章全文免费阅读_白洁千千瘦子48章_最新章节,老师没带罩子让我吃了一节课最新章节免费阅读 , 老师没带,最新发布|一层一层的剥开西施的衣服-梳理天下新闻,《歼灭天际线电影》-高清无删减免费手机播放 - 希腊爱情片,特性服务5星辰的独特之处:个性化服务的介绍-千瑞吉手游网,漂亮的瘦子4突破极限,观众...http://m.zhenxingxiangcun.vip/v/video/7648325020241119.shtml?scm=20241122Pvwi4
6.羲和雅苑烤鸭坊(瑞吉店)电话地址价格营业时间外卖 App内查看更多外卖 劝业场街道*** 到店商户优惠 商家团购套餐 ¥** 打开大众点评App查看 推荐菜 查看更多 网友推荐(332) 127人推荐 74人推荐 42...西康路沿线个性写真 2.0km 佳艺空间装饰·合同价0增项 ¥80942/人 围堤道沿线装修设计 4.4km 天津安琪妇产医院 塘沽城区妇幼医疗机构 41.0...https://www.dianping.com/shop/H7yiOe148Fh3kJXb?utm_source=groupshop&utm_medium=relatedshop&utm_campaign=47234993
7.亚龙湾那么多酒店选哪家?不同类别精品合辑11年开业的瑞吉是亚龙湾最后一家高端酒店,也是仅剩的唯一还拥有真正私人海滩的一家。 瑞吉酒店,网红爆款玻璃泳池 瑞吉酒店私家游艇码头 【特色】:可以...3075人评论 · 2.0万人收藏 【特色】:浓郁的泰缅风情,穿过万豪就是沙滩,相当于海滩和万豪共享 【客房】:有普通的公寓式临池房和独栋别墅,因层高最高只有...https://m.mafengwo.cn/gonglve/ziyouxing/38206.html
8.《瑞吉外卖》项目/** * 发送验证码 * @param user * @return */ @PostMapping("/sendMsg") public R<String> sendMsg(@RequestBody User user, HttpServletRequest request) { //获取邮箱(这里用的是phone) String userPhone = user.getPhone(); String subject = "瑞吉外卖登录验证码"; String text = "【瑞吉外卖】您...https://www.nowcoder.com/discuss/396064303206457344
9.登录功能和退出功能(瑞吉外卖)在系统首页右上角,点击关机按钮,可以退出本系统,跳转到登录页面。 通过浏览器调试工具(F12快捷键),点击关机按钮后,页面会发送请求 请求地址为:localhost:8080/employee/logout 请求方式:post 逻辑: 清理session中的id返回结果 编写退出方法 /** * 员工退出 ...https://maimai.cn/article/detail?fid=1745124132&efid=AZqtbkV4-LrDkkg00cIjug
10.Java精品项目瑞吉外卖之登陆的完善与退出功能篇java这篇文章主要为大家详细介绍了java精品项目-瑞吉外卖订餐系统,此项目过大,分为多章独立讲解,本篇内容为新增菜品和分页查询功能的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下+ 目录 上一篇:后端登录功能实现一. 需求分析...https://www.jb51.net/article/247907.htm
11.Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇...【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析 推荐视频: 黑马程序员全套Java教程_哔哩哔哩 尚硅谷Java入门视频教程_哔哩哔哩 推荐书籍: 《Java编程思想 (第4版)》 ...https://www.jindouyun.cn/document/industry/details/251250
12.Redis实战篇Kyle'sBlog在此特别感谢黑马程序员提供的Redis课程 42:48:52 黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目 337.4万 10.4万 视频 黑马程序员 内容概述 短信登录 这部分会使用Redis共享session来实现 但其实我在之前的瑞吉外卖的项目优化部分就做过了,用Redis替换session来...https://cyborg2077.github.io/2022/10/22/RedisPractice/