HttpSessionBindingListener接口有兩方需要實現的方法:
public synchronized void valueBound(HttpSessionBindingEvent httpsessionbindingevent)
public synchronized void valueUnbound(HttpSessionBindingEvent httpsessionbindingevent)
Session創建的時候Servlet容器將會調用valueBound方法;Session刪除的時候則調用valueUnbound方法.
具體應用可以跟蹤每個在登錄用戶,記錄相關的信息,以及在其超時的時候及時的刪除相關的信息.
實例代碼如下:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
....
....
public synchronized void valueBound(HttpSessionBindingEvent httpsessionbindingevent){
//檢查是否有效
if(!Valid()) return;
//檢查信息是否已經存在.不存在則添加.
if(Info.online.containsKey(m_userId))
{
//記錄日志信息
log.info("initial user context....");
UserOnlineStruct UOS = (UserOnlineStruct)Info.online.get(m_userId);
UOS.loginIp = uos.loginIp;
UOS.loginTime = uos.loginTime;
UOS.sessionId = uos.sessionId;
}
else{
Info.online.put(m_userId, uos);
}
}
public synchronized void valueUnbound(HttpSessionBindingEvent httpsessionbindingevent){
//檢查是否有效
if(!Valid()) return;
//刪除用戶相關信息
//記錄日志信息
log.info("destory user context....");
Info.online.remove(m_userId);
}