美文网首页
ssm配置监听实现在线人数统计

ssm配置监听实现在线人数统计

作者: haiyong6 | 来源:发表于2019-08-18 17:44 被阅读0次

    原理:

    当一个浏览器第一次访问网站的时候,J2EE应用服务器会新建一个HttpSession对象 ,并触发 HttpSession创建事件 ,如果注册了HttpSessionListener事件监听器,则会调用HttpSessionListener事件监听器的sessionCreated方法。相反,当这个浏览器访问结束超时的时候,J2EE应用服务器会销毁相应的HttpSession对象,触发 HttpSession销毁事件,同时调用所注册HttpSessionListener事件监听器的sessionDestroyed方法。

    所以只要新建一个类实现HttpSessionListener这个接口,就可以对sessionCreated和sessionDestroyed方法做自定义处理啦。

    配置监听

    在web.xml的开头处配置自定义监听器(监听器大于过滤器大于servlet 顺序从上往下最好)

    <!-- 网站在线人数统计监听器 -->
      <listener>
        <listener-class>com.zhaohy.app.utils.OnLineCountListener</listener-class>
      </listener>
    

    新建自定义监听类

    package com.zhaohy.app.utils;
    
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    
    public class OnLineCountListener implements  HttpSessionListener {
    
        public int count=0;//记录session的数量
        @Override
        public void sessionCreated(HttpSessionEvent se) {//监听session的创建
            count++;
            se.getSession().getServletContext().setAttribute("Count", count);
        }
    
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {//监听session的撤销
            count--;
            se.getSession().getServletContext().setAttribute("Count", count);
        }
    
    }
    
    

    如此,当HttpSession创建的时候会count++ ;销毁的时候count--;在application域可以拿到自定义的Count属性。
    页面jsp可以直接用el表达式输出${Count}

    补充JSP四大域对象

    pageContext域:${pageScope.key};
    request域:${requestScope.key};
    session域:${sessionScope.key};
    application域:${applicationScope.key}; 
    

    相关文章

      网友评论

          本文标题:ssm配置监听实现在线人数统计

          本文链接:https://www.haomeiwen.com/subject/jexdsctx.html