美文网首页
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