java 如何session
在 Java 中使用 Session
在 Java Web 开发中,Session 用于跟踪用户会话状态,存储用户数据。以下是常见的 Session 操作方法:
获取 Session 对象
通过 HttpServletRequest 获取当前会话的 Session 对象。如果不存在,可以创建新会话。
HttpSession session = request.getSession(); // 获取现有会话或创建新会话
HttpSession session = request.getSession(false); // 仅获取现有会话,不创建新会话
设置 Session 属性
使用 setAttribute 方法存储数据到 Session 中,键值对形式保存。
session.setAttribute("username", "user123");
session.setAttribute("cartItems", itemsList);
获取 Session 属性
通过 getAttribute 方法读取 Session 中存储的数据。
String username = (String) session.getAttribute("username");
List<String> cartItems = (List<String>) session.getAttribute("cartItems");
移除 Session 属性
使用 removeAttribute 方法删除特定属性。
session.removeAttribute("cartItems");
使 Session 失效
调用 invalidate 方法终止当前会话,清除所有会话数据。
session.invalidate();
设置 Session 超时时间
在 web.xml 中配置全局 Session 超时时间(分钟)。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
或在代码中动态设置超时时间(秒)。
session.setMaxInactiveInterval(1800); // 30分钟
监听 Session 事件
实现 HttpSessionListener 接口监听 Session 创建和销毁事件。
public class CustomSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("Session created: " + se.getSession().getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("Session destroyed: " + se.getSession().getId());
}
}
在 web.xml 中注册监听器:

<listener>
<listener-class>com.example.CustomSessionListener</listener-class>
</listener>
注意事项
- Session 数据存储在服务器内存中,大量使用会影响性能
- 敏感信息不应直接存储在 Session 中,建议加密处理
- 分布式环境下需要使用集中式 Session 管理(如 Redis)
- 浏览器关闭后 Session Cookie 可能失效,取决于浏览器设置






