一、HTTP 协议核心原理

1. HTTP 是什么
HTTP 是超文本传输协议 ,是浏览器和服务器之间通信的标准规则。所有网页、接口、图片、数据传输,都基于 HTTP 完成。
2. HTTP 最重要特性:无状态
无状态 = 服务器不记住任何用户。每一次请求都是独立的,服务器不知道:
- 是谁发的请求
- 之前有没有发过请求
- 有没有登录
这就是必须使用 Session 实现登录状态的根本原因。
3. GET 请求详解

作用
获取数据、查询数据。
特点
- 参数拼接在 URL 地址后面
- 可见、不安全,不能传密码等敏感信息
- 长度有限制(大约 2KB 以内)
- 会被浏览器缓存、保存到历史记录
- 幂等:多次请求结果一样
- 适合:查图书、查列表、查购物车
4. POST 请求详解

作用
提交数据、新增、修改、删除、登录。
特点
- 参数放在请求体中,不在 URL 显示
- 安全、隐私性强
- 数据大小无限制
- 不会被缓存
- 适合:登录、加入购物车、提交表单
5. GET 与 POST 最核心区别
- 查数据 → GET
- 传敏感数据 / 改数据 → POST
二、会话技术:Cookie 与 Session(必考重点)
1. 为什么需要会话?
因为 HTTP 无状态,服务器无法识别用户身份。必须通过会话技术让服务器 "记住" 用户。
2. Cookie 原理

- 保存在浏览器中的一小段文本数据
- 由服务器创建,通过响应头返回给浏览器
- 浏览器之后每次请求都会自动带上 Cookie
- 容量小(最多几 KB)、可被用户禁用、可篡改、不安全
3. Session 原理

- 保存在服务器内存中的对象
- 每个用户拥有独立的 Session
- 服务器只给浏览器一个 SESSIONID
- 真正的用户信息(用户 ID、登录状态)存在服务器
- 安全、可靠、不能被篡改
4. Session 与 Cookie 的关系

- Session 依赖 Cookie 传递 SESSIONID
- Cookie 只存 ID,Session 存真实数据
- 关闭浏览器 → Cookie 失效 → Session 无法识别
对比:
| 对比维度 | Cookie | Session |
|---|---|---|
| 存储位置 | 浏览器客户端 | 服务器端 |
| 存储内容 | 只存字符串(通常是 SESSIONID),也可直接存用户数据 |
存真实用户数据:用户 ID、登录状态、权限等 |
| 安全性 | 低:数据暴露在客户端,可被篡改、窃取 | 高:数据只在服务器,客户端拿不到真实信息 |
| 容量限制 | 约 4KB | 无限制(服务器内存决定) |
| 生命周期 | 可设置持久化时间,或随浏览器关闭而失效 | 依赖SESSIONID,默认超时 / 服务器重启后失效 |
| 依赖关系 | 不依赖 Session | 依赖 Cookie 传递 SESSIONID |
| 使用场景 | 记住登录状态(如 "记住我")、用户偏好设置 | 登录会话管理、用户身份识别、购物车数据 |
| 典型问题 | 易被篡改、窃取,不适合存敏感数据 | 服务器压力较大,Session 共享需要额外处理 |
5. 登录流程(Session 核心逻辑)
- 用户输入账号密码发送请求
- 后端校验成功
- 服务器创建 Session,把用户 ID存入 Session
- 服务器自动把 SESSIONID 写入浏览器 Cookie
- 后续请求浏览器自动带 SESSIONID
- 服务器通过 ID 找到对应用户 → 识别登录状态
6. 一句话区分
Cookie 存在浏览器,不安全;Session 存在服务器,安全。
四、Servlet 核心作用(后端控制层)
1. Servlet 是什么
运行在服务器端的 Java 程序,专门处理浏览器请求。
2. Servlet 的四大功能
- 接收前端请求参数
- 获取 Session,判断用户是否登录
- 调用数据库执行增删改查
- 返回 JSON 格式结果给前端
五、前后端交互完整流程
1. 前端做什么
- 收集用户输入(账号、密码、图书 ID)
- 通过 AJAX 发送请求
- 传递参数给后端
- 接收 JSON 结果
- 根据状态码判断成功 / 失败
- 弹窗提示、页面跳转、渲染列表
2. 后端做什么
- 接收请求
- 获取参数
- 判断登录状态(Session)
- 操作数据库
- 返回固定格式 JSON(code + message)
3. 前后端交互规范
统一使用 JSON 格式。通过 code 状态码判断结果:
- 200:成功
- 401:未登录
- 999 / 500:失败
