java如何利用session
使用 HttpSession 存储用户数据
在 Java Web 应用中,可以通过 HttpServletRequest 获取 HttpSession 对象。使用 setAttribute 方法存储数据,getAttribute 方法获取数据。
HttpSession session = request.getSession();
session.setAttribute("username", "user123");
String username = (String) session.getAttribute("username");
设置 Session 过期时间
Session 默认过期时间由容器决定,通常为 30 分钟。可以通过 setMaxInactiveInterval 方法设置自定义过期时间(单位:秒)。

session.setMaxInactiveInterval(60 * 60); // 设置为1小时
移除 Session 数据
使用 removeAttribute 方法移除单个属性,invalidate 方法使整个 Session 失效。
session.removeAttribute("username");
session.invalidate();
监听 Session 生命周期
实现 HttpSessionListener 接口可以监听 Session 创建和销毁事件。

public class MySessionListener 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());
}
}
分布式环境下的 Session 共享
在集群环境中,可以使用以下方案实现 Session 共享:
- 使用 Redis 等缓存服务器存储 Session
- 配置 Tomcat 的 Session 复制功能
- 使用 Spring Session 等框架实现透明化 Session 共享
<!-- Spring Session 依赖 -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
安全注意事项
使用 Session 时应注意:
- 避免存储敏感信息
- 定期清理不再使用的 Session
- 对重要的 Session 操作添加日志记录
- 考虑使用 HTTPS 保护 Session ID 传输安全






