当前页面: 开发资料首页 → JSP 专题 → 关于Session监听
关于Session监听
摘要: 关于Session监听
本人目前要对一个系统进行修改,要求把每个用户注销的动作(包括session超时)写入系统日志及记录在线用户名单。以前没弄过,查了一下资料,大概知道是要用HttpSessionBindingListener来实现,不过有几个不明白的地方:很多资料上都有“当你执行Session.addAttribute(String,Object)的时候,把一个实现了HttpSessionBindingListener接口的类加入为Attribute,Session会通知你的类,调用你的valueBound方法。”这句不太理解,请大侠给解释解释吧?
学习ing
这就是说,当你调用Session.addAttribute(String,Object)时,会执行你实现HttpSessionBindingListener接口的类的valueBound方法。
当然了,前提是你实现HttpSessionBindingListener接口的类配置正确
应该用HttpSessionListener。
“把一个实现了HttpSessionBindingListener接口的类加入为Attribute”这句作何理解?一般不就是把用户实体类的某个属性如username加入Attribute吗,怎么是类呢?
我照着http://blog.csdn.net/d80/archive/2004/06/16/17260.aspx做了一个例子,设置了session的有效期为1秒,但是后台打印除了的记录却显示并不准确,一般都在几十秒后才打印出用户退出的提示;还有,这个例子怎么没有在web.xml里声明监听器呢?
supergoalcn(Supergoal) 兄弟,用HttpSessionListener的好像只要访问页面就会被监听到的吧,我需要记录已登录的用户
看书ing,原来HttpSessionBindingListener是不用配置web.xml的。
JAVA 学习QQ群 30544110
再来一个 30240288
后台打印出的结果:
用户1登入系统 2006-09-28 20:53:16
用户2登入系统 2006-09-28 20:53:20
用户3登入系统 2006-09-28 20:53:24
用户1退出系统 2006-09-28 20:54:13
用户3退出系统 2006-09-28 20:54:13
用户2退出系统 2006-09-28 20:54:13
我设置了session.setMaxInactiveInterval(1),照理说应该按顺序退出才对,可是结果却是3个用户同时退出,而且时间间隔远不止1秒,郁闷啊。。