JavaWeb-11-监听器

本文介绍了一个用于统计在线人数的监听器实现。通过实现HttpSessionListener接口,在session创建和销毁时更新在线人数计数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监听器 listener

实现一个监听器的接口:

  1. 编写一个监听器,实现监听器的接口

    public class OnlineCountListener implements HttpSessionListener {
        // 创建 session 监听,一旦创建了 session 就会触发这个监听事件
        public void sessionCreated(HttpSessionEvent httpSessionEvent) {
            ServletContext context = httpSessionEvent.getSession().getServletContext();
            System.out.println(httpSessionEvent.getSession().getId());
            Integer onlineCount = (Integer) context.getAttribute("OnlineCount");
            if (onlineCount == null){
                onlineCount = new Integer(1);
            }else {
                int count = onlineCount.intValue();
                onlineCount = new Integer(count+1);
            }
            context.setAttribute("OnlineCount",onlineCount);
        }
    
        /*session 销毁:
        * 1. 手动(getSession().invalidate())
        * 2. 自动(配置 xml)
        * */
        // 销毁 session 监听,一旦 session 被销毁,这个监听事件就会被触发
        public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
            HttpSession session = httpSessionEvent.getSession();
            Integer onlineCount = (Integer) session.getAttribute("OnlineCount");
            if (onlineCount == null){
                onlineCount = new Integer(0);
            }else {
                int count = onlineCount.intValue();
                onlineCount = new Integer(count-1);
            }
            session.setAttribute("OnlineCount",onlineCount);
        }
    }
    
  2. 配置 web.xml 中的 listener

    <listener>
        <listener-class>com.aze.listener.OnlineCountListener</listener-class>
    </listener>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值