Servlte(监听器)

Servlte监听器:监听在线人数

什么是Servlte监听器?

Servlet监听器也叫做 listener,可以监听客户端的请求,服务端的操作等。
监听器Listener就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。

监听器的作用

当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。常用于统计在线人数和在线用户,系统加载时进行信息初始化,统计网站的访问量等等。
通过监听器,可以自动激发一些操作,比如监听在线人数:
当登陆成功时,监听器监听到session属性增加,在线人数加1;
当退出登陆时,监听器监听到session属性减少,在线人数减1。

监听器怎么工作?

监听器就是用来监听 ServletContext, HttpSession,和HttpServletRequest这三个对象,其中的三个接口都定义了三个方法来处理被监听对象中的属性的增加,删除和替换的事件。

响应方法属性变更
attributeAdded 方法向被监听对象中增加一个属性
attributeRemoved 方法删除被监听对象中的一个属性
attributeReplaced 方法监听器的域对象中的某个属性被替换

简单代码实现

对实时在线人数的监听:

@WebListener
public class OnlineListener implements HttpSessionAttributeListener {

@Override
public void attributeAdded(HttpSessionBindingEvent se) {
    System.out.println("OnlineListener.attributeAdded");

    String name =  se.getName();
    //System.out.println("name = " + name);
    //登录用户的session发生变化
    if("account".equals(name)){
        ServletContext application = se.getSession().getServletContext();
        int online_num = application.getAttribute("online_num") == null ? 0 : (Integer) application.getAttribute("online_num");
        System.out.println("online_num = " + online_num);
        online_num++;
        application.setAttribute("online_num",online_num);
    }
}

@Override
public void attributeRemoved(HttpSessionBindingEvent se) {
    System.out.println("OnlineListener.attributeRemoved");
}
}

注:在显示在线人数处通过session.getAttribute(“Count”)即可获取在线人数值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值