session监听器HttpSessionBindingListener
首先我在网上查了一下session的真正销毁条件:
1调用 session.invalidate();方法
2 session到了设置或者默认的超时时间,自动销毁(关闭浏览器此session还未销毁,只是不能再用了);
明白了上面的两条就可以去研究一下HttpSessionBindingListener这种session监听了。
新建一个类,继承HttpSessionBindingListener,实现了两个方法,分别是:
valueBound()和valueUnbound(),这个类按照通俗的理解就是对session绑定对象(setAttribute)过程的一种监听类型,它不需要配置xml文件,只是将实例化的HttpSessionBindingListener对象setAttribute到session里面就可以对HttpSessionBindingListener对象对象进行监听了,其实也就是对HttpSessionBindingListener对象所对应的session进行监听,还可以记录该session的具体信息(例如会员的登录信息)。
valueBound是在setAttribute时触发
valueUnbound则是在session销毁时触发。^-^(什么时候销毁上文有提到)
做出这样的一个例子:
新建一个继承自HttpSessionBindingListener的类UsersOnlineCountListener
- public class UsersOnlineCountListener implements HttpSessionBindingListener {
- int uid;
- public int getUid() {
- return uid;
- }
- public void setUid(int uid) {
- this.uid = uid;
- }
- public void valueBound(HttpSessionBindingEvent arg0) {
- System.out.println(uid+"登录了"+new Date());
- }
- public void valueUnbound(HttpSessionBindingEvent arg0) {
- System.out.println(uid+"下线了"+new Date());
- }
- }
会员登录成功的时候,代码中加上:
- UsersOnlineCountListener uocl = new UsersOnlineCountListener();
- uocl.setUid(obj.getUid());
- session.setAttribute("uocl", uocl);//这个时候要触发valueBound方法了
控制台输出:
11登录了Mon Sep 20 02:09:37 CST 2010
点击注销的时候,session销毁,触发valueUnbound
控制台输出:
11下线了Mon Sep 20 02:10:22 CST 2010
如果直接关闭浏览器,控制台不会立刻输出"11下线了Mon Sep 20 02:40:13 CST 2010"
大约30分钟后(session的自动销毁时间,可以设定)
控制台输出:
11下线了Mon Sep 20 02:40:13 CST 2010
这里总结下:valueUnbound方法将被以下任一条件触发
a. 执行session.setAttribute("uocl", 非uocl对象) 时。
b. 执行session.removeAttribute("uocl") 时。
c. 执行session.invalidate()时。
d. session超时后。
本文转自:http://blog.csdn.net/lovesea9/article/details/7612017
session监听器HttpSessionBindingListener的更多相关文章
- Session监听器
Session监听器,是用来监听session对象创建和关闭的.有时我们需要在session创建或关闭时执行一些操作.这是就可以使用Session Listenner. .在项目的web.xml文件中 ...
- 使用Session监听器实现统计在线人数
使用Session监听器实现统计在线人数 1.工作目录结构 包含监听器类和jsp页面 2.session监听器 首先利用session监听器来实现对访问网站时的session计数,当有session创 ...
- session监听器和Attribute监听器
session监听器 有一个web项目,每次一个新的浏览器链接,都会走下面SessionListerenr 方法,该技术可用于网站当前用户的统计 package com.cisst.controlle ...
- HttpSessionListener和HttpSessionBindingListener监听session的销毁
1. 使用HttpSessionListener public class OnlineUserListener implements HttpSessionListener { public voi ...
- 【学习笔记】【Javaweb】二、Session对象过期时间三种设置方法、Session失效监听器
一.前言 本文:https://www.cnblogs.com/Twobox/p/10361712.html 参考:https://www.cnblogs.com/diewufeixian/p/422 ...
- Java监听器
监听器 1.概念 监听器:主要是用来监听特定对象的创建,属性的变化的!,本质上却是一个实现特定接口的普通java类! 对象分为自己创建自己使用的,和别人创建自己用的,自己创建的不需要监听,值需要取监听 ...
- 用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
在线人数统计方面的实现,最初我的想法是,管理session,如果session销毁了就减少,如果登陆用户了就新增一个,但是如果是用户非法退出,如:未注销,关闭浏览器等,这个用户的session是管理不 ...
- java web session监听销毁跳转
1.了解如何使用HttpSessionListener监听session的销毁. 2.了解如何使用HttpSessionBindingListener监听session的销毁. 一. 使用HttpSe ...
- Servlet监听器类型
------------------------serlvet对象监听器------------------------------------------- request监听器(ServletRe ...
随机推荐
- C语言中register类型的变量有什么意义
int i; for(i=0; i<1000; i++){ // Some Code } 为了解决这个问题,可以将使用频繁的变量放在CPU的通用寄存器中,这样使用该变量时就不必访问内存,直接从寄 ...
- Units specified don't exist SHSUCDX can't install
重装系统,出现“Units specified don't exist SHSUCDX can't install”怎么办? 昨天,我们领导弄了个联想Thinkpad T510i的笔记本,本来预装的是 ...
- data目录和binlog目录搬迁的方法
刚开始安装时使用了默认目录,使用一段时间,数据慢慢变在,发现当前设置的目录空间不够时,就要搬迁数据到另一个目录了 如果全过程使用的是Mysql用户,应该可以正常启动. 如果用的ROOT用户,可能不能正 ...
- 专业版Unity技巧分享:使用定制资源配置文件 ScriptableObject
http://unity3d.9tech.cn/news/2014/0116/39639.html 通常,在游戏的开发过程中,最终会建立起一些组件,通过某种形式的配置文件接收一些数据.这些可能是程序级 ...
- ant design 中的 Select 组件常规写法
1.代码 import { Select, Spin } from 'antd'; const Option = Select.Option; <Select allowClear showSe ...
- PHP 通过LDAP协议,操作Windows Active Directory
原文地址:http://hi.baidu.com/lllangxx/item/3ccb7cdfa13b56eb3dc2cb39 一.学习如何管理Active Directory Active Dire ...
- Apache Directory Studio
Apache Directory Studio 是一个 LDAP 的工具平台,用来连接到任何 LDAP 服务器并进行管理和开发工作.主要功能:LDAP浏览器.LDIF编辑器.嵌入式 ApacheDS. ...
- Linux-软件包管理-rpm命令管理-安装-卸载
mount 确认光盘是否挂载 mount /dev/cdrom /mnt/cdrom 将设备名称/dev/cdrom安装到/mnt/cdrom挂载点下面 mount 查看光盘是否已经挂载 (ro表示只 ...
- C# 图片转换为base64
WebRequest webRequest = WebRequest.Create("验证码url"); WebResponse webResponse = webRequest. ...
- pandas如何去掉时间列的小时只保留日期
最近无聊,想玩玩数据挖掘,就拿天池的天池新人实战赛之[离线赛]练练手.https://tianchi.aliyun.com/getStart/information.htm?spm=5176.1000 ...