Appearance
J2EE_007_Session&Cookie.md
1. 概念与区别
1.1 Session(会话)
定义:
Session 是一种服务器端的技术,用于跟踪和存储用户在多个页面之间的交互信息。它类似于临时的“记忆”功能。特点:
- 存储位置:服务器端。
- 生命周期:从创建到失效或关闭期间有效。
- 数据大小:可以存储较大的数据量。
1.2 Cookie
定义:
Cookie 是一种客户端技术,用于在用户浏览器中存储少量信息。它可以帮助网站记住用户的偏好设置和身份验证信息。特点:
- 存储位置:客户端(浏览器)。
- 生命周期:可以是临时的或持久性的,具体取决于设置。
- 数据大小:容量有限,通常为4KB左右。
1.3 区别
特性 | Session | Cookie |
---|---|---|
存储位置 | 服务器端 | 客户端(浏览器) |
生命周期 | 请求之间,直到失效或关闭 | 根据设置,可以是临时的或持久性的 |
数据大小 | 较大 | 较小 |
使用场景 | 跟踪用户状态、存储会话数据 | 记住用户偏好、身份验证等 |
2. Session 的使用
2.1 创建和获取 Session
在 Java Servlet 中,可以通过 HttpServletRequest
对象获取当前的 Session。
示例代码:
java
// 获取当前Session(如果不存在则创建新的)
HttpSession session = request.getSession();
// 如果需要检查是否存在会话
if (session isNew) {
// 处理新会话逻辑
}
2.2 存储和读取数据
在 Session 中存储和检索数据使用 setAttribute()
和 getAttribute()
方法。
示例代码:
java
// 存储用户信息到Session中
session.setAttribute("username", "张三");
// 从Session中获取用户信息
String username = (String) session.getAttribute("username");
2.3 设置 Session 的有效时间
可以通过 setMaxInactiveInterval()
方法设置会话的超时时间(以秒为单位)。
示例代码:
java
session.setMaxInactiveInterval(1800); // 半小时后过期
2.4 终止 Session
调用 invalidate()
方法可以手动终止当前会话,并清除所有相关数据。
示例代码:
java
// 结束当前Session并删除其存储的数据
session.invalidate();