Session
Session
服务端会话跟踪技术:将数据保存到服务端。JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享。
Session 的核心作用
- 在服务端保存“与用户相关的状态”,例如登录用户信息、验证码、购物车等
- 让多次请求共享数据,而不必每次都把敏感数据发回客户端
Session 如何识别同一个客户端
最常见方式是:浏览器保存一个 Session 标识(例如 JSESSIONID)在 Cookie 中,之后请求自动携带该 Cookie。
- Cookie 保存标识:见 Cookie
- 服务器端根据标识找到对应的 Session 数据:见 Session的原理
常见注意点
- Session 不是“越多越好”
- 占用内存/存储资源
- 多机部署时需要考虑会话共享或粘性会话
- Session 失效
- 超时失效(inactive timeout)
- 主动失效(注销、服务端清理)
- 安全相关
- 防止会话固定攻击(登录后刷新 Session 标识)
- 配合 HttpOnly/Secure/SameSite 的 Cookie 设置(见 Cookie的使用细节)
与登录的整合路径
Filter案例-登录验证的实现 通常会用 Session 保存登录态,然后用 Filter 拦截受保护资源。