HttpSessionBindingListener接口有兩方需要實(shí)現(xiàn)的方法:
public synchronized void valueBound(HttpSessionBindingEvent httpsessionbindingevent)
public synchronized void valueUnbound(HttpSessionBindingEvent httpsessionbindingevent)
Session創(chuàng)建的時(shí)候Servlet容器將會(huì)調(diào)用valueBound方法;Session刪除的時(shí)候則調(diào)用valueUnbound方法.
具體應(yīng)用可以跟蹤每個(gè)在登錄用戶(hù),記錄相關(guān)的信息,以及在其超時(shí)的時(shí)候及時(shí)的刪除相關(guān)的信息.
實(shí)例代碼如下:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
....
....
public synchronized void valueBound(HttpSessionBindingEvent httpsessionbindingevent){
//檢查是否有效
if(!Valid()) return;
//檢查信息是否已經(jīng)存在.不存在則添加.
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;
//刪除用戶(hù)相關(guān)信息
//記錄日志信息
log.info("destory user context....");
Info.online.remove(m_userId);
}