【JavaEE进阶】 图书管理系统开发日记——贰

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【JavaEE进阶】 图书管理系统开发日记——贰


🌲前言

前面我们基本实现了前后端交互与相应简单的逻辑,后面经过一系列的学习,我们需要对我们的代码进行优化。

本篇博客我们先对我们的登录界面进行优化。

🎄设计数据库

数据库表是应⽤程序开发中的⼀个重要环节,数据库表的设计往往会决定我们的应⽤需求是否能顺利实现,甚⾄决定我们的实现⽅式.如何设计表以及这些表有哪些字段,这些表存在哪些关系也是⾮常重要的

我们的⽤⼾表有⽤⼾名和密码即可

创建如下:

--创建数据库
DROP DATABASE IF EXISTS book_test;
CREATE DATABASE book_test DEFAULT CHARACTER SET utf8mb4;
--创建用户表
DROP TABLE IF EXISTS user_info;
CREATE TABLE user_info (
    `id` INT NOT NULL AUTO_INCREMENT,
    `user_name` VARCHAR ( 128 ) NOT NULL,
    `password` VARCHAR ( 128 ) NOT NULL,
    `delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,
            `create_time` DATETIME DEFAULT now(),
    `update_time` DATETIME DEFAULT now() ON UPDATE now(),
    PRIMARY KEY ( `id` ),
UNIQUE INDEX `user_name_UNIQUE` ( `user_name` ASC )) ENGINE = INNODB DEFAULT
CHARACTER
SET = utf8mb4 COMMENT = '⽤⼾表';
--初始化数据
INSERT INTO user_info ( user_name, PASSWORD ) VALUES ( "陈平安", "888888" );
INSERT INTO user_info ( user_name, PASSWORD ) VALUES ( "李星云", "666666" );

🍃引⼊MyBatis和MySQL驱动依赖

pom文件引入如下:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

配置数据库与日志,yml文件如下:

spring:
 datasource:
  url: jdbc:mysql://127.0.0.1:3306/book_test?
   characterEncoding=utf8&useSSL=false
  username: root
  password: 666666
  driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
 configuration:
  map-underscore-to-camel-case: true #配置驼峰⾃动转换
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句
# 设置⽇志⽂件的⽂件名
logging:
 file:
  name: /logger/spring-library.log

🌳Model创建

创建一个model类的文件夹,创建一个UserInfo类如下:

@Data
public class UserInfo {
    //自增id
    private Integer id;
    //用户名
    private String userName;
    //密码
    private String password;
    //删除 0-有效 1-无效
    private Integer deleteFlag;
    private Date createTime;
    private Date updateTime;
}

🎍约定前后端交互接口

[请求]

/user/login

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

[参数]

name=李星云&password=666666

[响应]

true //账号密码验证正确, 否则返回false

浏览器给服务器发送 /user/login 这样的HTTP请求,服务器给浏览器返回了⼀个Boolean类型的数据,返回true,表⽰账号密码验证正确

🍀服务器代码

该代码我们使用应用分层的思想进行分层书写

🚩控制层

该层我们首先需要对传入数据进行判断合法

合法后,更具名称查询用户,如果可以查到,并且密码一致,就认为登录成功,并存入session

查询相关逻辑实现我们交给业务层实现

创建UserController书写代码如下:

@RequestMapping("/user")
@RestController
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/login")
    public boolean login(String name, String password, HttpSession session){
        //账号或密码为空
        if (!StringUtils.hasLength(name) || !StringUtils.hasLength(password)){
            return false;
        }
        UserInfo userInfo = userService.queryUserByName(name);
        //判断用户名是否存在,及用户名与密码是否正确
        if(userInfo != null && userInfo.getPassword().equals(password)) {
            userInfo.setPassword("");
            session.setAttribute("session_user_key",userInfo);
            return true;
        }
        return false;
    }
}

🚩业务层

该层代码简单。

具体查询我们交给数据层查询,我们只需要进行接收返回即可

UserService代码如下:

@Service
public class UserService {
    @Autowired
    private UserInfoMapper userInfoMapper;
    public UserInfo queryUserByName(String name) {
        return userInfoMapper.queryUserByName(name);
    }
}

🚩数据层

创建UserInfoMapper,使用注解方式进行查询,代码如下:

@Mapper
public interface UserInfoMapper {
    @Select("select id, user_name,`password`, delete_flag, create_time,update_time "
            + "from user_info where delete_flag=0 and user_name=#{name}")
    UserInfo queryUserByName(String name);
}

🌴效果展示

密码错误,登录失败

输入正确用户名与密码正确跳转

⭕总结

关于《【JavaEE进阶】 图书管理系统开发日记——贰》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
搜索推荐 Java 关系型数据库
0016Java程序设计-springboot幼儿园管理系统
0016Java程序设计-springboot幼儿园管理系统
64 0
|
Java 数据安全/隐私保护 索引
Java 毕业设计,基于 SpringBoot 的前后端分离的高校招生管理系统(二)
Java 毕业设计,基于 SpringBoot 的前后端分离的高校招生管理系统
|
7月前
|
存储 前端开发 Java
【JavaEE进阶】 图书管理系统开发日记——柒
【JavaEE进阶】 图书管理系统开发日记——柒
|
7月前
|
前端开发 Java 程序员
【JavaEE进阶】图书管理系统开发日记——捌
【JavaEE进阶】图书管理系统开发日记——捌
|
7月前
|
Java 数据库连接
杨老师课堂之JavaEE三大框架Hibernate入门第一课
杨老师课堂之JavaEE三大框架Hibernate入门第一课
43 0
|
7月前
|
Java
杨老师课堂之JavaEE三大框架Struts2入门第一课
杨老师课堂之JavaEE三大框架Struts2入门第一课
121 0
|
存储 Java 程序员
Java 毕业设计,基于 SpringBoot 的前后端分离的高校招生管理系统(一)
Java 毕业设计,基于 SpringBoot 的前后端分离的高校招生管理系统
|
8月前
|
存储 前端开发 Java
【JavaEE进阶】 图书管理系统开发日记——叁
【JavaEE进阶】 图书管理系统开发日记——叁
|
8月前
|
XML 前端开发 Java
【JavaEE进阶】 图书管理系统开发日记——陆
【JavaEE进阶】 图书管理系统开发日记——陆
|
8月前
|
Java 关系型数据库 MySQL
springboot基于java的超市进销存管理系统 毕业设计-附源码
springboot基于java的超市进销存管理系统 毕业设计-附源码