文章目录
- 🌲前言
- 🎄设计数据库
- 🍃引⼊MyBatis和MySQL驱动依赖
- 🌳Model创建
- 🎍约定前后端交互接口
- 🍀服务器代码
- 🚩控制层
- 🚩业务层
- 🚩数据层
- 🌴效果展示
- ⭕总结
🌲前言
前面我们基本实现了前后端交互与相应简单的逻辑,后面经过一系列的学习,我们需要对我们的代码进行优化。
本篇博客我们先对我们的登录界面进行优化。
🎄设计数据库
数据库表是应⽤程序开发中的⼀个重要环节,数据库表的设计往往会决定我们的应⽤需求是否能顺利实现,甚⾄决定我们的实现⽅式.如何设计表以及这些表有哪些字段,这些表存在哪些关系也是⾮常重要的
我们的⽤⼾表有⽤⼾名和密码即可
创建如下:
--创建数据库
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=falseusername: rootpassword: 666666driver-class-name: com.mysql.cj.jdbc.Drivermybatis: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 {//自增idprivate 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 {@Autowiredprivate 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 {@Autowiredprivate 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进阶】 图书管理系统开发日记——贰》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下!