学习笔记-瑞吉外卖项目实战(一)

软件开发整体介绍

 软件开发流程

角色分工

软件环境

瑞吉外卖项目介绍

项目介绍

产品原型介绍

技术选型

功能架构

角色

开发环境搭建

数据

创建database reggie,在里面创建表:

maven

创建springboot项目并导入相关依赖坐标:

我们可以在项目启动类上添加注解@Slf4j, 该注解由lombok提供。添加后我们可以使用属性log在控制输出日志:

我们将前端页面的资源导入到static目录,之后随便访问一个html页面:

访问成功。

后台系统登录功能

需求分析

打开前端的登录界面,点击登录

再去查看前端代码,确定返回数据的类型大概:

代码开发

我们将大致的框架创建好:

Employee类与employee表中的字段对应。dao,service分别继承BaseMapper和IService,使用mybatisplus来帮助构建。

我们再定义数据的统一返回类型,使用类R来定义:

为了通用性,还给R设置了泛型<T>,返回的数据类型即可以根据需求来改变

    private Integer code; //编码:1成功,0和其它数字为失败

    private String msg; //错误信息,成功无此信息

    private T data; //数据

    private Map map = new HashMap(); //动态数据

里面有两个静态方法,分别是数据获取成功和失败对应的方法:

我们再在controller类中创建员工登录的方法:

编写代码:

    @PutMapping("/login")
    public R<Employee> login(HttpServletRequest httpServletRequest, @RequestBody Employee employee) {

        //1.对传进的密码进行md5加密
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());

        //2.根据页面提交的用户名username查询数据库;
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getUsername, employee.getUsername());
        Employee emp =employeeService.getOne(queryWrapper);                          //username在数据库为unique

        //3.查询数据库中是否存在该用户名
        if(null==emp){
            return R.error("该用户未注册");
        }
        //4.密码比对
        else if(!emp.getPassword().equals(password)){
            return R.error("密码错误");
        }
        //5.查看员工状态,如果未已警用状态,则返回禁用结果
        else if(emp.getStatus()!=1){
            return R.error("该账号已被封禁");
        }
        //6.登录成功,将员工id存入Session并返回登陆成功结果
        else {
            httpServletRequest.getSession().setAttribute("employee",emp.getId());
            return R.success(emp);
        }
    }

功能测试

当输入不存在的用户名:

输入错误密码:

用户名密码与状态都正确的话,则登陆成功直接跳转到管理端。

后台系统退出功能

需求分析

登录成功后,应该还有对应的登出功能

前端展示的页面右上角有个关机的按钮,那就是前端发起登出响应的按钮。

查看前端代码后,发现是发送了一个employee/logout的post请求,我们则需要去实现这个操作。

 代码开发

退出只需返回到登录界面,并且将先前传入的session数据清除即可。页面跳转在前端代码实现了,我们只需实现数据清除即可。

调用httpServletRequest的getsession()的removeAttribute()方法。

    /**
     * 员工退出
     * @param httpServletRequest
     * @return
     */
    @PostMapping("/logout")
    public R<String> logout(HttpServletRequest httpServletRequest){
        //清理session中保存的当前员工的Id。
        httpServletRequest.getSession().removeAttribute("employee");
        return R.success("退出成功");
    }

功能测试:

登录成功后,浏览器保存有数据

点击登出按钮

保存的数据被清除。

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

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

相关文章

webGL网页游戏的开发步骤

开发基于 WebGL 的网页游戏涉及多个步骤&#xff0c;包括游戏概念的设计、图形资源的创建、编码和调试等。以下是一个一般性的步骤指南&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 确定游戏概念&a…

【办公软件】XML格式文件怎么转Excel表格文件?

首先我们有一个XML格式的文件&#xff0c;例如&#xff1a; 其中的数据是这样的&#xff1a; 我们现在在路径中选中这个XML格式的文件&#xff0c;然后鼠标右键&#xff0c;选择用WPS表格打开后&#xff0c;可见XML格式的文件已经自动转换成了Excel表啦。。。。

CH02_交给子类

Template Method模式 组成模板的方法被定义在父类中&#xff0c;由于这些方法是抽象方法&#xff0c;所以只查看父类的代码是无法知道这些方法最终会进行何种具体处理的。唯一能知道的就是父类如何调用这些方法。 类图 说明 AbstractClass&#xff08;抽象类&#xff09; Abs…

JAVAEE初阶 多线程基础(四)

join的知识补充,线程的状态和线程安全 一.多线程完成运算操作二.多线程代码的变换2.1 转换成串行执行 三.join的参数四.获取线程的引用4.1用this方法获取实例4.2 用currentThread获取实例 五.线程的状态六.线程安全 一.多线程完成运算操作 可以发现,多线程并行比单线程的速度快…

Java核心知识点整理大全19-笔记

目录 14.1.5.2. MemStore 刷盘 全局内存控制 MemStore 达到上限 RegionServer 的 Hlog 数量达到上限 手工触发 关闭 RegionServer 触发 Region 使用 HLOG 恢复完数据后触发 14.1.6.HBase vs Cassandra 15. MongoDB 15.1.1. 概念 15.1.2. 特点 16. Cassandra 16.1.1…

MySQL-02-InnoDB存储引擎

实际的业务系统开发中&#xff0c;使用MySQL数据库&#xff0c;我们使用最多的当然是支持事务并发的InnoDB存储引擎的这种表结构&#xff0c;下面我们介绍下InnoDB存储引擎相关的知识点。 1-Innodb体系架构 InnoDB存储引擎有多个内存块&#xff0c;可以认为这些内存块组成了一…

1146:吃糖果(C语言)

题目描述 HOHO&#xff0c;终于从Speakless手上赢走了所有的糖果&#xff0c;是Gardon吃糖果时有个特殊的癖好&#xff0c;就是不喜欢连续两次吃一样的糖果&#xff0c;喜欢先吃一颗A种类的糖果&#xff0c;下一次换一种口味&#xff0c;吃一颗B种类的糖果&#xff0c;这样&…

GPT还远远不是真正的智能

GPT是一个基于深度学习的自然语言处理模型&#xff0c;它可以生成逼真的文本。虽然GPT在生成文本方面取得了显著的进展&#xff0c;但它并不具备真正的智能。GPT是通过训练模型来学习语言模式&#xff0c;它不具备理解、推理、判断和主动学习的能力。它只是根据已有的语料库生成…

Go 中切片(Slice)的长度与容量

切片长度与容量在 Go 中很常见。切片长度是切片中可用元素的数量&#xff0c;而切片容量是从切片中第一个元素开始计算的底层数组中的元素数量。 Go 中的开发者经常混淆切片长度和容量&#xff0c;或者对它们不够了解。理解这两个概念对于高效处理切片的核心操作&#xff0c;比…

天鹅湖国家旅游度假区 | 展柜OLED透明屏:创新展示提升互动体验

天鹅湖国家旅游度假区 | 展柜OLED透明屏 产品&#xff1a;一块55寸OLED透明屏嵌入玻璃安装 应用场景&#xff1a;用在天鹅湖国家旅游度假区——三门峡城市文化客厅展馆中的一个透明展示柜&#xff0c;用一块55寸OLED透明屏嵌入展示柜的玻璃&#xff0c;让观众即可以看到展柜里…

试写一算法将两个递增有序的带头结点的单链表合并为一个递增有序的带头结点的单链表。(利用原表结点空间)

试写一算法将两个递增有序的带头结点的单链表合并为一个递增有序的带头结点的单链表。 &#xff08;利用原表结点空间&#xff09; 比如现在要将下面两个链表合并&#xff0c;这里是要求利用原表空间 我们先创建一个辅助的链表L3&#xff0c;用p和q分别标记L1和L2的数据元素&…

​无人机石油管道巡检方案新亮点:灵活准确又高效

在当前石油工业的安全管理中&#xff0c;无人机技术逐渐成为一种不可或缺的工具。随着我国油气管道里程的持续增长&#xff0c;确保这些关键基础设施的安全运行变得越来越重要。传统的巡检方法已经无法满足现代油气行业的需求&#xff0c;而无人机石油管道巡检技术的应用提供了…

在CI/CD中使用submodule

背景信息 客户的submodule使用的是ssh协议拉取 前置操作 gitlab添加子模块 git clone ssh://gitkube.bdeet.top:2222/cicd/123.git cd 123/ ls -la git submodule add ssh://gitkube.bdeet.top:2222/approve/test-1.git git submodule add ssh://gitkube.bdeet.top:2222/mr…

oracle数据库备份2(expdp)

使用exp命令定时进行数据库备份的操作前面已经记录过&#xff1a; oralce数据库定时备份 下面记录下使用更加高效的expdp命令和impdp&#xff0c;这两个命令同样是用来做数据库备份和还原的&#xff0c;但速度更快&#xff0c;效率更高&#xff0c;缺点是只能用在服务器端进行…

企业为什么需要工作流自动化?

每一家企业都常常面临这些困扰&#xff1a;业务流程繁琐&#xff0c;工作人员每天花费大量的时间精力用于处理重复性的工作、审批流程复杂&#xff0c;开展工作前要经历层层审批&#xff0c;导致客户需求不能及时满足。想要打破僵局可以借助CRM系统的工作流自动化&#xff0c;什…

数学加速器:Python numpy.add函数全解读

更多Python学习内容&#xff1a;ipengtao.com Numpy是Python中用于科学计算的重要库之一&#xff0c;而numpy.add函数是其众多功能强大的函数之一。在本文中&#xff0c;将深入研究numpy.add函数的用法&#xff0c;通过丰富的示例代码&#xff0c;帮助大家更全面地理解和掌握这…

2023亚马逊云科技re:Invent,在开发者板块探究如何利用技术重塑业务

美国当地时间11月27日&#xff0c;一年一度的亚马逊云科技re:Invent大会在美国拉斯维加斯盛大开幕。这场全球云计算领域的前沿盛会&#xff0c;已连续12年成为引领行业的风向标。那么本次2023亚马逊云科技re:Invent大会又有哪些可玩、可看的新项目&#xff0c;下面就一起来瞧一…

亚马逊策略:通过影响者营销改造您的亚马逊商店

亚马逊卖家面临着从人群中脱颖而出的持续挑战 - 如果您是那些寻求变革性方法来接触目标受众、建立信任并将您的销售推向新高度的卖家之一&#xff0c;那么影响力营销就是您的答案。 您可能遇到过令人难以置信的成功故事&#xff0c;产品一夜之间流行起来&#xff0c;仅仅是因为…

基于oracle数据库的PLSQL编程以及存储过程的创建和使用

PL/SQL编程 declare begindbms_output.put_line(helloworld!);-- line表示换行 end;set serveroutput on; 开启打印输出 / 表示结束变量的声明与赋值 declarev_name varchar2(20) : 张三;v_sal number;v_addr varchar2(200); begin-- 直接赋值v_sal : 1111;-- 语句赋值selec…

Docker Swarm总结+Jenkins安装配置与集成(5/5)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…