用户中心项目笔记| 青训营笔记

110 阅读4分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。

用户中心项目笔记

完整了解做项目的思路,接触一些企业级开发技术

目标: 之后都能轻松做出来管理系统

需求分析=>设计=>技术选型=>初始化/引入需要的计数=>写Demo=>写代码(实现业务逻辑)=>测试(单元测试)/系统测试=>代码提交/代码评审=>部署=>发布

需求分析

  1. 登录/注册
  2. 用户管理 (仅管理员可见)
  3. 用户校验

技术选型

前端: 三件套 + React +组件库(Ant Design)+ Umi+ AntDesign Pro(现成的管理系统)

后端: java

  • spring (依赖注入框架,帮助你管理java对象,继承一些其他的内容)
  • springmvc (web框架,提供接口访问,restful接口等能力)
  • mybatis (java操作数据库的框架,持久层框架)
  • mybatis-plus (对mybatis的增强,不用写sql也能实现增删改查)
  • springboot (快速启动/快速集成项目,不用自己管理spring配置,不用自己整合各种框架)
  • mysql

部署: 服务器 / 容器 (平台)

计划

  1. 初始化项目
    1. 前端初始化
      1. 初始化项目
      2. 引入组件
    2. 后端初始化
      1. 准备环境(MYSQL之类的)
      2. 引入框架
  2. 登录 / 注册
    1. 前端

    2. 后端

      注册逻辑:

      1. 用户在前端输入账户和密码,以及校验码
      2. 校验账户,密码是否符合要求
        1. 账户要不小于6位
        2. 密码至少八位
        3. 账号不能重复
        4. 账户不包含特殊字符
        5. 密码和校验密码相同
      3. 密码要加盐加密保存在数据库里,不要明文保存在数据库
      4. 插入数据库 登录准备:
      5. 单机登录=>单点登录=>分布式登录
      6. 接受参数:用户账户、密码,
      7. 请求类型: POST(请求参数很长时不要用GET)
      8. 返回值:用户信息(脱敏) 登录逻辑
      9. 校验用户账户和密码是否合法
        1. 非空
        2. 账户长度不小于6
        3. 密码不小于8
        4. 账户不包含特殊字符
      10. 校验密码是否输入正确,要和数据库中的密码对应
      11. 要记录用户的登录态(session),存储到服务器上去(用后端的SpringBoot框架封装的服务器Tomcat去记录)
      12. 返回用户信息(脱敏)
  3. 用户管理(仅管理员可见)
    1. 前端

    2. 后端

收获

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数据库表,右键点击

image.png

创建对应表的实体类

image.png

image.png

  • 生成的mapper里有这个,代表可以自动增删改查,直接调用方法 image.png

image.png

  • mybatis-plus自动的插入方法,会报错,因为mybatis会默认的将表数据转为下划线

image.png

image.png 需要改为false

  • 引入junit依赖
<!--        junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

可以在service里按alt+enter进行创建测试类

image.png

image.png 注意src下的包名要和测试的包名字一样

image.png

  • 插件,可以一键生成默认的set构造

image.png

  • 引入commenUtil依赖
<!--        commenUtils-->
     <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-lang3</artifactId>
         <version>3.12.0</version>
     </dependency>

image.png 这种多余的判断可以简化

  • mybatis-plus 逻辑删除 逻辑删除可以根据某一个字段的值,来区别查询,比如说

image.png 这个isDelete,逻辑已删除是1,只要值设置为1,那么系统就默认将他删除了,就查不到他的值了

image.png

如何知道是哪个用户登录了?

  1. 连接服务器端后,得到一个session1状态(匿名会话),返回给前端
  2. 登录成功后,得到了登录成功的session,并且给该session设置一些值(用户信息),返回给前端一个设置cookie的命令
  3. 前端接收到后端的命令后, 设置cookie,保存在浏览器内
  4. 前端再次请求后端的时候(相同的域名),在请求头中带上cookie去请求
  5. 后端拿到前端传来的cookie,找到对应的session
  6. 后端从session中可以取出基于该session存储的变量(用户得到登录信息,登录名字)