当前位置: 代码迷 >> Java Web开发 >> Session退出,小弟我监控不到?valueUnbound的使用
  详细解决方案

Session退出,小弟我监控不到?valueUnbound的使用

热度:31   发布时间:2016-04-17 13:02:03.0
Session退出,我监控不到?valueUnbound的使用
我的Session监控类如下:
import   javax.servlet.ServletContext;
import   javax.servlet.http.HttpSession;
import   javax.servlet.http.HttpSessionBindingEvent;
import   javax.servlet.http.HttpSessionBindingListener;

import   org.apache.log4j.Logger;

import   com.haiersoft.core.Globals;
import   com.haiersoft.login.vo.LoginBean;


//监听登录的整个过程  
public   class   SessionListener   implements   HttpSessionBindingListener   {

/**日志   */
private   static   Logger   log   =   Logger.getLogger(SessionListener.class);
public   String   privateInfo   =   " ";
public   SessionListener(String   info)   {
this.privateInfo   =   info;
}
public   void   valueBound(HttpSessionBindingEvent   event)   {
if   (log.isDebugEnabled())     log.debug(privateInfo+ "-登录 ");
}
public   void   valueUnbound(HttpSessionBindingEvent   event)   {
LoginBean   loginbean   =   new   LoginBean();
HttpSession   session   =   event.getSession();
//   从session中得到用户bean对象
loginbean   =   (LoginBean)   session.getAttribute(Globals.LOGIN_SESSION);
ServletContext   sc=event.getSession().getServletContext();
sc.removeAttribute(loginbean.getGuid());
if   (log.isDebugEnabled())     log.debug(privateInfo+ "-退出 ");
}
}
我在直接session.setAttribute()的时候是可以触发valueUnbound的,但是在Session.TimeOut的时候就触发不到valueUnbound方法,想知道缘由,等Session超时的时间实在是太痛苦,做过的帮帮忙吧

------解决方案--------------------
退出销毁session应该使用HttpSessionListener的sessionDestroyed方法啊,
也就是说你应该使用HttpSessionListener接口,

结贴给分吧,谢谢。


------解决方案--------------------
那你是书本看错了,valueUnbound在很多情况都会发生的,session.removeAttribute()就会触发

你应该使用HttpSessionListener,那个才是正确的得到会话超时
  相关解决方案