zoukankan      html  css  js  c++  java
  • 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

    [java] view plain copy
     
    1. public class UsersOnlineCountListener implements HttpSessionBindingListener {  
    2. int uid;  
    3. public int getUid() {  
    4.    return uid;  
    5. }  
    6. public void setUid(int uid) {  
    7.    this.uid = uid;  
    8. }  
    9. public void valueBound(HttpSessionBindingEvent arg0) {  
    10.     System.out.println(uid+"登录了"+new Date());  
    11. }  
    12. public void valueUnbound(HttpSessionBindingEvent arg0) {  
    13.    System.out.println(uid+"下线了"+new Date());  
    14. }  
    15. }  

    会员登录成功的时候,代码中加上:

    [java] view plain copy
     
    1. UsersOnlineCountListener uocl = new UsersOnlineCountListener();  
    2. uocl.setUid(obj.getUid());  
    3. 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

  • 相关阅读:
    5.颜色空间转换
    Linux下的解压命令
    4.图像模糊/图像平滑
    insightface作者提供数据训练解读
    MXNetError: [05:53:50] src/operator/nn/./cudnn/cudnn_convolution-inl.h:287
    python中import cv2遇到的错误及安装方法
    docker 安装 mxnet
    95. Unique Binary Search Trees II
    236. Lowest Common Ancestor of a Binary Tree
    124. Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/8463560.html
Copyright © 2011-2022 走看看