java中如何使用session
使用 HttpSession 获取和设置属性
在 Java Web 应用中,可以通过 HttpServletRequest 获取 HttpSession 对象。使用 setAttribute 方法存储数据,getAttribute 方法获取数据。
// 获取或创建 session
HttpSession session = request.getSession();
// 设置 session 属性
session.setAttribute("username", "user123");
// 获取 session 属性
String username = (String) session.getAttribute("username");
设置 Session 超时时间
Session 默认超时时间由服务器配置决定,可通过 setMaxInactiveInterval 方法设置特定 Session 的超时时间(单位为秒)。
// 设置 session 30分钟后过期
session.setMaxInactiveInterval(30 * 60);
在 web.xml 中也可以全局配置 Session 超时时间:

<session-config>
<session-timeout>30</session-timeout>
</session-config>
销毁 Session
调用 invalidate 方法可以立即销毁 Session,清除所有存储的属性。
// 销毁当前 session
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());
}
}
在 web.xml 中注册监听器:
<listener>
<listener-class>com.example.MySessionListener</listener-class>
</listener>
使用 Session 实现用户登录
典型应用场景是用户登录后存储用户信息在 Session 中,后续请求通过检查 Session 判断用户是否登录。
// 用户登录成功后
User user = authenticate(username, password);
if (user != null) {
HttpSession session = request.getSession();
session.setAttribute("currentUser", user);
}
// 检查用户是否登录
HttpSession session = request.getSession(false);
if (session != null && session.getAttribute("currentUser") != null) {
// 用户已登录
} else {
// 用户未登录
}






