蜗牛学苑 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 配置,为后续项目部署打好基础。
相关推荐
不积跬步无以至千里mmbb2622 分钟前
rust_analysis
开发语言·后端·rust
SL_staff30 分钟前
10人团队如何用轻量私有化文档平台实现知识复用提效?技术视角拆解B/S架构下的协作闭环
java·开源·全栈
释厄62343 分钟前
同性线套娃律——圆面积必然=1+2+...+n 的求和·圆心不与 π 相关
java·人工智能·算法·1024程序员节
todoitbo1 小时前
MongoDB迁移之后,Spring Data 和 Hibernate 各自接哪类请求
大数据·数据库·mongodb·spring·hibernate·金仓数据库
暴力求解1 小时前
C++ ---继承(二)
开发语言·c++·算法
猫猫.1531 小时前
IO、存储、硬盘、文件系统详细总结
java·java-ee
陈飞EXCEL1 小时前
北京杰飞 IT 旗下妙码生花少儿Python编程上线两大学习系统
开发语言·python·学习
SLAM必须dunk1 小时前
Agent入门学习一
学习
SL_staff1 小时前
设备离线时业务不中断:JVS-IOT高可用架构解析
java·物联网·产品
郭小李2 小时前
mybatis 动态 sql
java·sql·mybatis