蜗牛学苑 Java 智能体学习 Day46|贯穿项目 2 思维导图复盘

一、思维导图整体知识结构梳理

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 虚拟机基础,打通后端项目部署前置知识,巩固面试高频考点。

三、当日学习总结

  1. 掌握 GET/POST、@Autowired/@Resource、resultMap/resultType 等 JavaWeb 高频对比知识点,厘清底层区别。
  2. 掌握 MD5 加盐加密原理,理解为什么加盐可以提升密码安全性,能独立编写 MD5 工具类。
  3. 吃透登录业务完整流程:前端传参 → 后端查询用户 → 密码加盐比对 → 生成 JWT 令牌,前后端拦截器实现 token 校验与登录状态控制。
  4. 熟悉 VMware 虚拟机安装、Linux 基础命令与 IP 配置,为后续项目部署打好基础。
相关推荐
智慧物业老杨3 小时前
物业日常巡查的数智化重构:从“打卡式巡检“到“闭环式风控“
android·java·人工智能·系统架构·rxjava
晴天的雨.9924 小时前
【C++算法】和为s的两个数
开发语言·数据结构·c++·算法
IvanCodes9 小时前
Python 数据处理(十三):JSON、CSV 与数据序列化
开发语言·python
M78佐菲9 小时前
ARM学习笔记(1)
linux·arm开发·笔记·嵌入式硬件·学习
步行cgn10 小时前
Spring c 命名空间注入详解
java·后端·spring
明月_清风10 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
aramae10 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路11 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
无敌贵点大王11 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表