这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。
用户中心项目笔记
完整了解做项目的思路,接触一些企业级开发技术
目标: 之后都能轻松做出来管理系统
需求分析=>设计=>技术选型=>初始化/引入需要的计数=>写Demo=>写代码(实现业务逻辑)=>测试(单元测试)/系统测试=>代码提交/代码评审=>部署=>发布
需求分析
- 登录/注册
- 用户管理 (仅管理员可见)
- 用户校验
技术选型
前端: 三件套 + React +组件库(Ant Design)+ Umi+ AntDesign Pro(现成的管理系统)
后端: java
- spring (依赖注入框架,帮助你管理java对象,继承一些其他的内容)
- springmvc (web框架,提供接口访问,restful接口等能力)
- mybatis (java操作数据库的框架,持久层框架)
- mybatis-plus (对mybatis的增强,不用写sql也能实现增删改查)
- springboot (快速启动/快速集成项目,不用自己管理spring配置,不用自己整合各种框架)
- mysql
部署: 服务器 / 容器 (平台)
计划
- 初始化项目
- 前端初始化
- 初始化项目
- 引入组件
- 后端初始化
- 准备环境(MYSQL之类的)
- 引入框架
- 前端初始化
- 登录 / 注册
-
前端
-
后端
注册逻辑:
- 用户在前端输入账户和密码,以及校验码
- 校验账户,密码是否符合要求
- 账户要不小于6位
- 密码至少八位
- 账号不能重复
- 账户不包含特殊字符
- 密码和校验密码相同
- 密码要加盐加密保存在数据库里,不要明文保存在数据库
- 插入数据库 登录准备:
- 单机登录=>单点登录=>分布式登录
- 接受参数:用户账户、密码,
- 请求类型: POST(请求参数很长时不要用GET)
- 返回值:用户信息(脱敏) 登录逻辑
- 校验用户账户和密码是否合法
- 非空
- 账户长度不小于6
- 密码不小于8
- 账户不包含特殊字符
- 校验密码是否输入正确,要和数据库中的密码对应
- 要记录用户的登录态(session),存储到服务器上去(用后端的SpringBoot框架封装的服务器Tomcat去记录)
- 返回用户信息(脱敏)
-
- 用户管理(仅管理员可见)
-
前端
-
后端
-
收获
mybatis-plus使用
- 引入依赖
<!-- mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
- 插件下载mybatisX
可以根据数据库自动生成domain实体对象,mapper(操作数据库对象),mapper.xml(定义了mapper对象和数据库的关联,可以自己在里面写sql),service(常用的增删改查)以及serviceImpl
然后点击idea数据库表,右键点击
创建对应表的实体类
- 生成的mapper里有这个,代表可以自动增删改查,直接调用方法
- mybatis-plus自动的插入方法,会报错,因为mybatis会默认的将表数据转为下划线
需要改为false
- 引入junit依赖
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
可以在service里按alt+enter进行创建测试类
注意src下的包名要和测试的包名字一样
- 插件,可以一键生成默认的set构造
- 引入commenUtil依赖
<!-- commenUtils-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
这种多余的判断可以简化
- mybatis-plus 逻辑删除 逻辑删除可以根据某一个字段的值,来区别查询,比如说
这个isDelete,逻辑已删除是1,只要值设置为1,那么系统就默认将他删除了,就查不到他的值了
如何知道是哪个用户登录了?
- 连接服务器端后,得到一个session1状态(匿名会话),返回给前端
- 登录成功后,得到了登录成功的session,并且给该session设置一些值(用户信息),返回给前端一个设置cookie的命令
- 前端接收到后端的命令后, 设置cookie,保存在浏览器内
- 前端再次请求后端的时候(相同的域名),在请求头中带上cookie去请求
- 后端拿到前端传来的cookie,找到对应的session
- 后端从session中可以取出基于该session存储的变量(用户得到登录信息,登录名字)