一、思维导图整体知识结构梳理
1. 晨考题
- POST 和 GET 请求的区别
- GET:参数在 url 一起提交、大小限制 4K、不安全,参数放在请求体
- POST:无大小限制,容易出现乱码问题
- @Autowired 和 @Qualifier 区别
- @Autowired:Spring 框架注解,默认按类型查找 Bean
- @Qualifier:配合使用,用来指定 bean 名称
- @Resource
- J2DK 自带注解(JSR-250 规范),优先按名称查找,找不到再按类型查找
- @Param 注解是否必须
- 单个参数:可以省略 @Param
- 多个参数:必须写 @Param 注解
- resultMap 和 resultType 的区别
- resultType:xml 结果映射,数据库列和实体属性一一对应,自动映射;自定义映射规则,列名与实体字段不一致时使用
- resultMap:标签
- id:映射主键
- result:映射普通字段
- association:映射一对一关系
- collection:映射一对多关系
- 多表关系
- 多对一:员工 - 部门
- 一对多:部门 - 员工
- 多对多:员工 - 职位,需要借助第三张中间表
2. MD5 加盐加密 密码安全
- MD5 基础:不可逆哈希算法,只能加密,不能解密;普通 MD5 缺陷:简单密码容易被破解
- 盐 salt:随机字符串,使用 UUID 单元测试生成;加盐目的:相同密码加密结果不一样
- 加密公式:密码明文 + salt (随机字符串)
- 测试代码 TestMD5
3. 登录业务完整流程 UserServiceImpl login 方法
- 前端提交:前端输入用户名、密码,传给后端接口
- 后端校验:判断用户名、密码非空,为空返回登录错误;UUID 生成随机盐;MyBatis 查询数据库
- 根据用户名查询数据库:getMapper.selectByUsername (用户名)
- 查询用户,拿到数据库中用户名、加密后的密码、salt
- 用户不存在:返回登录错误
- 密码校验:前端明文密码 + salt,数据库取出 salt,执行 MD5 加密;加密结果和数据库对比,不一致返回登录错误
- 用户状态校验:status=2 代表账号禁用,返回登录错误
- 登录成功:封装用户 id、用户名等存入 map;JwtUtil 生成 JWT 令牌;返回 token 给前端
4. 前端 axios request.js
- 请求拦截器:每次请求从 sessionStorage 读取 token,请求头 header 携带 token,过期则拦截
- 响应拦截器:判断后端返回 code=401,代表 token 失效;删除本地 token,页面强制跳转登录页
5. JWT 拦截器 JwtInterceptor 后端
- preHandle 拦截所有请求,进行登录接口放行
- 解析校验 JWT:获取请求头中的 token;解析 token 失败 / 过期,返回未登录提示;解析失败或者过期,判定 token 不合法,返回未登录;校验通过 return true,放行访问后端接口
6. 数据库存储
- 添加 user 表字段:salt 盐值
7. 安装 VMware & Linux
- VMware:虚拟机软件,创建 Linux 虚拟机;作用:搭建项目服务环境,隔离开发环境
- Linux
- 分区:磁盘划分 / 根分区、swap 交换分区
- 命令:文本处理命令;文件查看、编辑;系统相关命令:进程、网络、服务启停
- 配置 ip:静态 ip:固定 IP,项目后端服务固定地址,前后端联调;动态 IP:DHCP 自动分配,重启虚拟机 IP 会变
二、制作意图
本次思维导图用于梳理贯穿项目登录模块完整业务链路,串联 HTTP 请求、Spring 注解、MyBatis 多表映射、MD5 加盐加密、JWT 鉴权、前后端拦截器整套登录流程,同时补充 Linux 虚拟机基础,打通后端项目部署前置知识,巩固面试高频考点。
三、当日学习总结
- 掌握 GET/POST、@Autowired/@Resource、resultMap/resultType 等 JavaWeb 高频对比知识点,厘清底层区别。
- 掌握 MD5 加盐加密原理,理解为什么加盐可以提升密码安全性,能独立编写 MD5 工具类。
- 吃透登录业务完整流程:前端传参 → 后端查询用户 → 密码加盐比对 → 生成 JWT 令牌,前后端拦截器实现 token 校验与登录状态控制。
- 熟悉 VMware 虚拟机安装、Linux 基础命令与 IP 配置,为后续项目部署打好基础。
