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

软件开发整体介绍

软件开发流程

角色分工

软件环境

瑞吉外卖项目介绍

项目介绍

产品原型介绍

技术选型

功能架构

角色

开发环境搭建

数据

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

maven

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

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

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

访问成功。

后台系统登录功能

需求分析

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

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

代码开发

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

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

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

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

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

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

    private T data; //数据

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

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

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

编写代码:

java 复制代码
    @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()方法。

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

功能测试:

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

点击登出按钮

保存的数据被清除。

相关推荐
云上艺旅16 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
你觉得20517 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
A旧城以西18 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ18 小时前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL0007518 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
吴梓穆18 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
Three~stone19 小时前
MySQL学习集--DDL
数据库·sql·学习
齐尹秦19 小时前
HTML 音频(Audio)学习笔记
学习
V---scwantop---信19 小时前
英文字体:大胆都市街头Y2Y涂鸦风格品牌海报专辑封面服装字体 Chrome TM – Graffiti Font
笔记·字体
瞌睡不来19 小时前
(学习总结32)Linux 基础 IO
linux·学习·io