在j2ee中,要在用户点击退出后把session变量清空,可在action类中使用一下代码:
HttpSession session = request.getSession();
for(Enumeration e = session.getAttributeNames(); e.hasMoreElements();){
String var = e.nextElement().toString();
if(session.getAttribute(var)!=null){
session.removeAttribute(var);
}
}
1.session.getAttributeNames(); 会得到一个enumeration类型数据,然后在使用上述格式进行遍历,为安全起见,先判断一下session.getAttribute(var)!=null,然后再进行清除,enumeration类型数据使用上述方法进行遍历
2.在一个hasMoreElements()方法后只能使用一次nextElement()方法,如果第二次调用的话将出现java.util.NoSuchElementException异常
3.有时将有一个org.apache.struts.action.LOCALE对象用于struts的国际化
待解决问题:如果一个页面点击链接打开了另外一个新的窗口,那么两个页面将共同使用一个session变量,在新打开的页面有可以打开更多页面,如果这样在后打开的页面中,点击退出的话,页面定位到重新登录页面,有以一个新的用户类型进行登录了,session中将重新注入新的变量,那么在其他没有关闭的窗口中将无法也公用新的session变量,那将会产生新的问题,如何把使用相同session变量的页面全部关闭?