java 如何使用session
创建和获取Session
在Java Web应用中,可以通过HttpServletRequest对象获取HttpSession。如果Session不存在,可以自动创建一个新的Session。
HttpSession session = request.getSession(); // 获取Session,若不存在则创建
HttpSession existingSession = request.getSession(false); // 仅获取现有Session,若不存在返回null
设置Session属性
通过setAttribute方法可以向Session中存储数据,数据以键值对形式保存。
session.setAttribute("username", "admin"); // 存储用户名
session.setAttribute("loginTime", new Date()); // 存储登录时间
获取Session属性
使用getAttribute方法可以从Session中读取存储的数据。

String username = (String) session.getAttribute("username"); // 获取用户名
Date loginTime = (Date) session.getAttribute("loginTime"); // 获取登录时间
移除Session属性
通过removeAttribute方法可以删除Session中的某个属性。
session.removeAttribute("username"); // 移除用户名
使Session失效
调用invalidate方法可以使当前Session失效,通常在用户注销时使用。

session.invalidate(); // 销毁Session
设置Session超时时间
可以在web.xml中配置全局Session超时时间(单位为分钟),也可以在代码中动态设置。
<!-- web.xml配置 -->
<session-config>
<session-timeout>30</session-timeout> <!-- 30分钟后Session失效 -->
</session-config>
// 代码中动态设置(单位为秒)
session.setMaxInactiveInterval(1800); // 30分钟
监听Session事件
通过实现HttpSessionListener或HttpSessionAttributeListener接口,可以监听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>





