监听器(Listener)

监听器统计网站在线人数:

public class OnlineCountListener implements HttpSessionListener
{
    //由于为每一个用户分配一个Session对象,所以可以通过统计Session的个数来统计网站在线的人数
    //实现两个方法,创建session和销毁session,也就是监听一个session是否被创建,一个session是否被销毁

    //一旦创建了一个session就会触发这个事件
    @Override
    public void sessionCreated(HttpSessionEvent se)
    {
        //取出此时OnlineCount这个字段的值是多少
        // 如果为0,那表示当前没有人在访问网站, 现在这个事件被触发了,表示来了一个人,于是将在线人数置为1
        //如果不为0,那表示本来就有人在访问网站,现在这个时间被再次触发,表示又来了一个人,于是在线人数加以1
        ServletContext ctx=se.getSession().getServletContext();
        Integer onlineCount= (Integer) ctx.getAttribute("OnlineCount");

        if(onlineCount==null)
        {
            onlineCount=new Integer(1);
        }
        else
        {
            int count=onlineCount.intValue();
            onlineCount=new Integer(count+1);
        }

        //更新完OnlineCount这个字段的值,就把它的新值设置进OnlineCount这个字段里面
        ctx.setAttribute("OnlineCount",onlineCount);


    }
    //一旦销毁了一个session就会触发这个事件
    @Override
    public void sessionDestroyed(HttpSessionEvent se)
    {
        ServletContext ctx=se.getSession().getServletContext();
        Integer onlineCount= (Integer) ctx.getAttribute("OnlineCount");

        if(onlineCount==null)
        {
            onlineCount=new Integer(0);
        }
        else
        {
            int count=onlineCount.intValue();
            onlineCount=new Integer(count-1);
        }

        //更新完OnlineCount这个字段的值,就把它的新值设置进OnlineCount这个字段里面
        ctx.setAttribute("OnlineCount",onlineCount);

    }
}

在web.xml文件中注册

    <listener>
        <listener-class>com.kuang.OnlineCountListener</listener-class>
    </listener>

监听器是一个程序

这个程序监听另一个对象的(1)属性是否改变 (2)方法是否被调用

当被监听的对象发生上述两件事情的时候,监听器这个程序里的某个方法回立即自动执行

事件源就是被监听的对象,将事件源和监听器进行绑定就是注册监听器

监听器 Listener可以分为 3 类,总共8个:

  1. 监听对象创建和销毁的监听器
  2. 监听对象中属性变更的监听器
  3. 监听 HttpSession 中的对象状态改变的监听器

1.监听对象创建和销毁的监听器

2.监听属性变更的监听器

3.监听 Session 中对象状态改变的监听器

 一个应用:利用监听器统计网站在线人数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值