我写了个session监听,目的是记录用户的登陆时间和注销系统时间,代码如下:
public class SessionListener implements HttpSessionListener,
HttpSessionBindingListener {
private Logger logger = Logger.getInstance(SessionListener.class);
public SessionListener() {
} public void sessionCreated(HttpSessionEvent se) {
//工作正常!
} public void sessionDestroyed(HttpSessionEvent se) {
//工作正常
logger.info("用户退出成功!");
} public void valueBound(HttpSessionBindingEvent event) {
/**@todo ...*/
logger.info("event.getName()="+event.getName());
if (event.getName() == "SaveSessionBeanForm") {
logger.info("用户登陆!");
}
} public void valueUnbound(HttpSessionBindingEvent event) {
/**@todo ...*/
logger.info("event.getName()="+event.getName());
if (event.getName() == "SaveSessionBeanForm") {
logger.info("用户退出!");
}
}
}为了方便说明问题,去掉了具体的出来逻辑。在上面代码中,总是进不了valueBound()和valueUnbound()方法,实在是想不明白啊,其他两个方法倒是工作正常。恳请高手请教啊!
public class SessionListener implements HttpSessionListener,
HttpSessionBindingListener {
private Logger logger = Logger.getInstance(SessionListener.class);
public SessionListener() {
} public void sessionCreated(HttpSessionEvent se) {
//工作正常!
} public void sessionDestroyed(HttpSessionEvent se) {
//工作正常
logger.info("用户退出成功!");
} public void valueBound(HttpSessionBindingEvent event) {
/**@todo ...*/
logger.info("event.getName()="+event.getName());
if (event.getName() == "SaveSessionBeanForm") {
logger.info("用户登陆!");
}
} public void valueUnbound(HttpSessionBindingEvent event) {
/**@todo ...*/
logger.info("event.getName()="+event.getName());
if (event.getName() == "SaveSessionBeanForm") {
logger.info("用户退出!");
}
}
}为了方便说明问题,去掉了具体的出来逻辑。在上面代码中,总是进不了valueBound()和valueUnbound()方法,实在是想不明白啊,其他两个方法倒是工作正常。恳请高手请教啊!
解决方案 »
- Spring3,Ibatis3 整合方案-请有这方面经验朋友指教
- PDA页面制作的问题
- 散尽家财求JSP Mail的分页,谁能告诉我什么分?
- 《100分》从数据库读取时间问题
- 可以直接在工程中导入别人的jar包吗??????急~~~~~~~~~~~~~~~~~~
- 好困惑的问题。关于jspsmartupload.
- RequestDispatcher的forward问题(憋了一个上午了)
- 救命!
- 技术蠢萌求助【JavaScript】闭包问题
- 有没有大佬IDEA知道调出这个窗口是哪个快捷键?
- 请问各位大虾怎么样才能让弹出的确认框的默认焦点在“不是”按钮上?谢谢
- Struts]关于DispatchAction中的request问题
logger.info("用户退出!");
}event.getName() == "SaveSessionBeanForm"这样比较字符串不对吧应该用event.getName().equals("SaveSessionBeanForm")吧
已经在web.xml中配置了,而且在用户打开浏览器和注销时,sessionCreated()和sessionDestroyed()都打印出log信息,证明已经进入到该函数;但是在web运行过程中,在session.setAttribute()时,该函数总没log信息,这就证明没进入到valueBound()方法。
你说的确实是bug,已经修改了,谢谢:)
可是,在session.setAttribute()时,valueBound()的 if()进入不了那还想得通,可是logger.info("event.getName()="+event.getName());语句也没反应,这就不正常了
这样才会触发你的listener