蜗牛学苑 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 配置,为后续项目部署打好基础。
相关推荐
高级程序源6 分钟前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
WeiXin_DZbishe18 分钟前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
kimnoic35 分钟前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
别动我齐刘海1 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
必须得开心呀2 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
code2cat3 小时前
Java进阶篇之AtomicLongFieldUpdater:把累计额度留在对象字段中
java·cas·并发编程
WeiXin_DZbishe3 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码3 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
WeiXin_DZbishe3 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计