Listener事件总结

ServletContentListener

publicvoid contextDestroyed(ServletContextEvent arg0) {

       System.out.println("-------app-------stroyed------");

    }

 

    publicvoid contextInitialized(ServletContextEvent arg0) {

       System.out.println("app=-----starting---");

       ServletContext context=arg0.getServletContext();

       context.setAttribute("name1", "wugang1");

       context.setAttribute("name2", "wugang2");

       context.setAttribute("name3", "wugang3");

       context.setAttribute("name4", "wugang4");

    }

//应用程序初始化调用。

 

 

接口ServletContextAttributeListener

里面的三个方法:

public voidattributeAdded(ServletContextAttributeEvent scab) {//session添加时触发

         publicvoid attributeRemoved(ServletContextAttributeEvent scab) {//session移除是触发

public voidattributeReplaced(ServletContextAttributeEvent scab) {//session键值时触发

只有是session发生的以上的改变,将被监听。。。。。做出相应的操作

 

 

2、HttpSessionBindingListener

HttpSessionBindingListener虽然叫做监听器,但使用方法与HttpSessionListener完全不同。我们实际看一下它是如何使用的。

新建类OnlineUserBindingListener,实现HttpSessionBindingListener接口,构造方法传入 username参数,HttpSessionBindingListener内有两个方法 valueBound(HttpSessionBindingEvent event)和valueUnbound(HttpSessionBindingEventevent),前者为数据绑定,后者为取消绑定

所谓对session进行数据绑定,就是调用session.setAttribute()把HttpSessionBindingListener保存进session中

 

这就是HttpSessionBindingListener和HttpSessionListener之间的最大区别:HttpSessionListener只需要设置到web.xml中就可以监听整个应用中的所有session。 HttpSessionBindingListener必须实例化后放入某一个session中,才可以进行监听。

从监听范围上比较,HttpSessionListener设置一次就可以监听所有session,HttpSessionBindingListener通常都是一对一的。

正是这种区别成就了HttpSessionBindingListener的优势,我们可以让每个listener对应一个username,这样 就不需要每次再去session中读取username,进一步可以将所有操作在线列表的代码都移入listener,更容易维护。

HttpSessionBindingListener代码如下:

 

User user3 = new User();

       user3.setPassword(password);

       user3.setUsername(username);

       session.setAttribute("u3", user3);

public class User implements HttpSessionBindingListener{//监听器

 

publicvoid valueBound(HttpSessionBindingEvent event) {//数据绑定

      

       System.out.println("当前对象" + this + "被加入到session");

      

    }

 

    publicvoid valueUnbound(HttpSessionBindingEvent event) {//取消绑定

       System.out.println("当前对象" + this + "被从session中移除");

    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值