栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

利用session监听,统计在线人数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

利用session监听,统计在线人数

写在之前:
对于之前的登录验证,利用了session进行验证,确实是实现判断验证,但是,不知道为什么想要运行新建的.jsp文件时 还是默认显固定页面,修改url也不管用

解决方案——过滤器的.xml文件映射路径在搞鬼,过滤器的功能强大 但是得慎用。

正文:
由于session都在服务端,建立的连接数也可通过session个数来判断,再则HTTP协议是短链接的,所以无法在服务端根据建立了多少连接来统计当前有多少人在线。 因此可以通过统计session有多少来估计在线人数。

一旦一个用户访问服务器,就会创建一个session. 如果该用户持续访问,那么该session会持续有效。

如果经历了30分钟,该用户也没有做任何操作,就表示该用户“下线” 了,其对应的session也会被销毁。

所以可以通过统计有多少session被保留来估计当前在线人数。

编写统计在线人数的servlet:
自定义类——OnlineNumberListener
实现接口HttpSessionListener

当创建一个session的时候,就把数字+1,并且放在application里。

 servlet中application的定义:
ServletContext application = httpSessionEvent.getSession().getServletContext();

这就是jsp里的application在servlet和JSP文件里的application对象定义不一样,JSP可以直接调用 因为是隐式对象

注: 第一次从application里取数据的时候,是空的,要设置为0。

当销毁一个session的时候,把这个数字-1

package Listener;


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

public class OnlineSessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        ServletContext application=httpSessionEvent.getSession().getServletContext();
        Integer Online_number=(Integer)application.getAttribute("Online_number");
        if(null==Online_number)
            Online_number=0;

        Online_number++;
        application.setAttribute("Online_number",Online_number);

        System.out.println("新增一位在线用户!");

    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        ServletContext application =httpSessionEvent.getSession().getServletContext();
        Integer Online_number=(Integer)application.getAttribute("Online_number");//要转换为数字时 要默认用(Integer)强转
        if(null==Online_number)
        {
            Online_number=0;
        }
        else
            Online_number--;
        application.setAttribute("Online_number",Online_number);
        System.out.println("一位用户离线");
    }
}

配置相应的web.xml映射路径:

 
        Listener.OnlineSessionListener
    

新建.jsp文件验证:

<%@page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>

当前在线人数:${Online_number}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786136.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号