侧边栏壁纸
博主头像
这就是之谦博主等级

我们的征途是星辰大海

  • 累计撰写 182 篇文章
  • 累计创建 3 个标签
  • 累计收到 16 条评论
标签搜索

目 录CONTENT

文章目录

8.监听器Listener

这就是之谦
2021-08-07 / 0 评论 / 0 点赞 / 352 阅读 / 1,337 字
温馨提示:
本文最后更新于 2021-08-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

8.监听器Listener

实现一个监听器的接口;(有n种监听器)

统计网站人数demo(统计session

package com.lxw.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class OnlineCountListener implements HttpSessionListener {

    //创建session的监听
    //一旦创建session,就会触发一次这个事件
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext ctx = se.getSession().getServletContext();
        System.out.println("SessionID=" + se.getSession().getId());
        Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");

        if (onlineCount==null){
            onlineCount = 1;
        }else{
            onlineCount++;
        }
        ctx.setAttribute("OnlineCount",onlineCount);
    }

    //销毁session的监听
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {

        ServletContext ctx = se.getSession().getServletContext();
        Integer onlineCount = (Integer) ctx.getAttribute("OnlineCount");
//        se.getSession().invalidate();//手动销毁session
        if (onlineCount==null){
            onlineCount = 0;
        }else{
            onlineCount--;
        }
        ctx.setAttribute("OnlineCount",onlineCount);

    }
}

web.xml中注册监听器

<!--    注册监听器-->
    <listener>
        <listener-class>com.lxw.listener.OnlineCountListener</listener-class>
    </listener>
0

评论区