前言:
之前寫過一篇關于統計線上使用者及單使用者登入的文章,後來發現如果設定session逾時,則存在同一個浏覽器下不同使用者登入,session逾時後,登入使用者的Vector沒有做到相應更新。
解決方法:
在前一篇文章的基礎上做以下修改:
public class User{
private String sessionId; //增加sessionId字段,存放sessionId
......提供set、get方法
}
public class UserList{
private Vector<Userlogin> v1 = new Vector<Userlogin>(); //增加v1,存放sessionId相同的使用者資訊
public Vector<Userlogin> IsExistSessionId(String sessionId) throws Exception {
// 增加IsExistSessionId方法,篩選出sessionId相同的使用者,根據sessionId篩選
}
}
public class UserListener implements HttpSessionAttributeListener, ServletContextListener{
public void attributeAdded(HttpSessionBindingEvent event) {
//使用者資訊添加到Vector前,擷取sessionId增加到使用者資訊中
}
public void attributeRemoved(HttpSessionBindingEvent event) {
//擷取sessionId,調用userList的IsExistSessionId方法,并從Vector中清除與之比對的sessionId使用者
//注意:使用者退出時,不要操作session,直接從Vector中删除該使用者資訊即可
}
public void attributeReplaced(HttpSessionBindingEvent event) {
//使用者資訊添加到Vector前,擷取sessionId增加到使用者資訊中
}
}