校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
❤ 作者主页:欢迎来到我的技术博客😎
❀ 个人介绍:大家好,本人热衷于Java后端开发,欢迎来交流学习哦!( ̄▽ ̄)~*
🍊 如果文章对您有帮助,记得关注、点赞、收藏、评论⭐️⭐️⭐️
📣 您的支持将是我创作的动力,让我们一起加油进步吧!!!🎉🎉

一、软件开发整体介绍

1. 软件开发流程

在这里插入图片描述

2. 角色匹配

在这里插入图片描述

3. 软件环境

在这里插入图片描述


二、项目介绍

1. 技术选型

在这里插入图片描述

2. 功能架构

在这里插入图片描述

3. 角色

在这里插入图片描述


三、环境搭建

1. 数据库环境搭建

  • 创建数据库 reggie
  • 执行 sql 语句
  • 数据表

在这里插入图片描述


2. maven项目搭建

  • 创建maven工程 reggie_tak_out
  • 添加相关的依赖

      <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.4.5</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <java.version>1.8</java.version>
        </properties>
    
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <scope>compile</scope>
            </dependency>
    
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.2</version>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.76</version>
            </dependency>
    
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>2.6</version>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.23</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.4.5</version>
                </plugin>
            </plugins>
        </build>
  • 添加配置信息 application.yml

    server:
      port: 8080
    
    spring:
      application:
        name: reggie_take_out
    
      datasource:
        druid:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
          username: root
          password: abc123
    
    mybatis-plus:
      configuration:
        #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射
        map-underscore-to-camel-case: true
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      global-config:
        db-config:
          id-type: ASSIGN_ID
  • 启动类

    @Slf4j
    @SpringBootApplication
    public class ReggieApplication {
        public static void main(String[] args) {
            SpringApplication.run(ReggieApplication.class,     args);
            log.info("项目启动成功...");
        }
    }
    
  • 把前端的静态资源放在resource目录

在这里插入图片描述

  • 设置静态资源映射

    @Slf4j
    @Configuration
    public class WebMvcConfig extends WebMvcConfigurationSupport {
        /**
         * 设置静态资源映射
         * @param registry
         */
        @Override
        protected void addResourceHandlers(ResourceHandlerRegistry registry) {
            log.info("开始进行静态资源映射...");
            registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
            registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
        }
    }
  • 测试,启动项目,访问 http://localhost:8080/backend/index.html

在这里插入图片描述


四、后台登录功能开发

1. 需求分析

  • 登录页面展示(http://localhost:8080/backend/page/login/login.html)

在这里插入图片描述
 

  • 查看登录请求信息

在这里插入图片描述 

  • 数据模型(employee表)

在这里插入图片描述


2. 实体类

创建实体类 Employeeemployee 表进行映射:

@Data
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    private String username;

    private String name;

    private String password;

    private String phone;

    private String sex;

    private String idNumber;//身份证号码

    private Integer status;

    private LocalDateTime createTime;

    private LocalDateTime updateTime;

    @TableField(fill = FieldFill.INSERT)
    private Long createUser;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;

}

3. 创建mapper层、service层、controller层

  • EmployeeMapper

    @Mapper
    public interface EmployeeMapper extends BaseMapper<Employee>{
    }
  • EmployeeService

    public interface EmployeeService extends IService<Employee> {
    }
  • EmployeeServiceImpl

    @Service
    public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper,Employee> implements EmployeeService{
    }
  • EmployeeController

    @Slf4j
    @RestController
    @RequestMapping("employee")
    public class EmployeeController {
    
        @Autowired
        private EmployeeService employeeService;
        
    }

4. 导入返回结果类R

此类是一个通用结果类,服务端响应的所有结果最终都会包装成此种类型返回给前端页面。

/**
 * 通用返回结果,服务端响应的数据最终都会封装成此对象
 * @param <T>
 */
@Data
public class R<T> {

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

    private String msg; //错误信息

    private T data; //数据

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

    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;
        return r;
    }

    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }

    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }

}

5. 在Controller中创建登录方法

在这里插入图片描述
在这里插入图片描述
 

@Slf4j
@RestController
@RequestMapping("employee")
public class EmployeeController {

    @Autowired
    private EmployeeService employeeService;

    @PostMapping("login")
    public R<Employee> login(HttpServletRequest request,  @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);

        //3.如果没有查询到则返回登录失败结果
        if (emp == null) {
            return R.error("登录失败");
        }

        //4.密码比对,如果不一致则返回登录失败结果
        if (!emp.getPassword().equals(password)) {
            return R.error("密码错误");
        }

        //5、查看员工状态,如果已禁用状态,则返回员工已禁用结果
        if (emp.getStatus() == 0) {
            return R.error("账号已禁用");
        }

        //6、登录成功,将用户id存入Session并返回成功结果
        request.getSession().setAttribute("employee", emp.getId());
        return R.success(emp);
    }
}

6. 测试

登录成功后跳转到一下的页面:
在这里插入图片描述


五、后台退出功能开发

1. 需求分析

员工登录成功后,页面跳转到系统首页面(backend/index.html),此时回显示当前登录用户的姓名。如果员工想要退出系统,直接点击右侧的退出按钮即可退出系统,退出系统后页面跳转回登录页面。

2. 代码实现

EmployeeController

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

3. 功能测试

先登录,然后退出即可;看浏览器中的数据是否会被清除。


创作不易,如果有帮助到你,请给文章==点个赞和收藏==,让更多的人看到!!!
==关注博主==不迷路,内容持续更新中。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
存储 JavaScript 前端开发
[TypeScript]简介、开发环境搭建、基本类型
说到TypeScript我们不得不提到JavaScript,JS是由网景公司发明的一款弱类型动态脚本语言。说到弱类型,我们也就知道它非常的灵活,但是这个灵活是一把双刃剑。这就导致有些错误可能在编译时发现不了,直到运行的时候才会报错。这非常不利于我们后期的维护,而现在很多企业的大型项目转而去使用TypeScript来解决这个问题。产生背景TypeScript起源于使用JavaScript开发的大型项目。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发。。...
[TypeScript]简介、开发环境搭建、基本类型
|
监控 Java 开发工具
android系统开发环境搭建
Android Studio开发工具介绍、Android SDK和Android开发环境的安装
245 0
android系统开发环境搭建
|
IDE 网络协议 Linux
【Linux】【开发环境】【RHEL】开发环境搭建系列之十一——Linux系统下搭建基于vim的C/C++ IDE开发环境
【Linux】【开发环境】【RHEL】开发环境搭建系列之十一——Linux系统下搭建基于vim的C/C++ IDE开发环境
313 0
|
Unix Linux API
【Linux】【开发环境】【RHEL】开发环境搭建系列之九——Linux系统下Wine环境搭建
【Linux】【开发环境】【RHEL】开发环境搭建系列之九——Linux系统下Wine环境搭建
528 0
|
缓存 JavaScript 前端开发
Vue前端开发环境搭建与项目启动运行(以Win10系统为例)
Vue前端开发环境搭建与项目启动运行(以Win10系统为例)
Vue前端开发环境搭建与项目启动运行(以Win10系统为例)
|
SQL 分布式计算 Hadoop
Windows10系统下Hadoop和Hive开发环境搭建填坑指南
笔者目前需要搭建数据平台,发现了Windows系统下,Hadoop和Hive等组件的安装和运行存在大量的坑,而本着有坑必填的目标,笔者还是花了几个晚上的下班时候在多个互联网参考资料的帮助下完成了Windows10系统下Hadoop和Hive开发环境的搭建。这篇文章记录了整个搭建过程中的具体步骤、遇到的问题和对应的解决方案。
372 0
|
存储 数据采集 JavaScript
python语言简介及开发环境搭建的详细介绍
第一节:计算机是什么第二节:开发前的准备 第二章 python简介及环境搭建 完成了前面python开发前的准备,从这节课开始我们将会为大家介绍python语言是怎么编程的。 2.1计算机语言简介 之前的章节内容里面为大家介绍过,计算机就是一台用来计算的机器,执行人类发出的指令。
python语言简介及开发环境搭建的详细介绍
|
TensorFlow 算法框架/工具
TensorFlow实战(三)-简介和开发环境搭建
3-1 什么是tensorflow 官网首页 ...
1070 0
|
C++
C/C++各种系统开发环境搭建
http://pan.baidu.com/s/1qWJKF4g
572 0