简单版 -- 通过Session统计用户对某一JSP页面的在线人数

本文介绍了一个使用HttpSessionListener接口实现实时在线人数统计的系统,通过监听session创建和销毁来更新在线人数,并在jsp页面上显示。同时,页面配置了自动刷新功能,每3秒更新一次在线人数显示。在web.xml中注册了监听器以启动该功能。
摘要由CSDN通过智能技术生成

想法

既然需要监听session
我们就需要监听器,我们就需要自定义实现HttpSessionListener接口

然后我们定义一个用来存在线人数的类OnlineCount,变量为静态方法也为静态

实现HttpSessionListener接口的TestSessionListener重写了sessionCreatedsessionDestroyed方法,这两个方法分别是在session创建和销毁时执行,所以我们每次在运行方法时调整OnlineCount中变量,然后写一个jsp界面专门让这个变量输出即可

最后记得,要在web.xml里面注册一下监听器

如果看到启动tomcat却出现两个session,是因为IDEA它也会链接一个session

然后我还弄了一个网站自动刷新的东西

在这里插入图片描述
在这里插入图片描述

OnlineCount

package top.sehnsucht;

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/9/26
 * ~~(^_^)~~
 */
public class OnlineCount {
    private static Integer onlineNum = 0;

    public static void add() {
        onlineNum++;
        System.out.println("add");
        System.out.println(onlineNum);
    }

    public static void delete() {
        onlineNum--;
        System.out.println("delete");
        System.out.println(onlineNum);
    }

    public static Integer getOnlineNum() {
        return onlineNum;
    }

}

TestSessionListener

package top.sehnsucht;

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

/**
 * @Description:
 * @Author: Cai
 * @CreateTime: 2021/9/26
 * ~~(^_^)~~
 */

public class TestSessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        OnlineCount.add();
        se.getSession().setMaxInactiveInterval(1000);//秒为单位
        HttpSessionListener.super.sessionCreated(se);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        OnlineCount.delete();
        HttpSessionListener.super.sessionDestroyed(se);
    }
}

showOnlineNum.jsp

<%@ page import="top.sehnsucht.OnlineCount" %><%--
  Created by IntelliJ IDEA.
  User: windows
  Date: 2021/9/26
  Time: 16:39
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    out.println("现在在线人数是" + OnlineCount.getOnlineNum());
    response.setHeader("refresh", "3");
%>
</body>
</html>

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>top.sehnsucht.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>loginTime</servlet-name>
    <servlet-class>top.sehnsucht.CookieLoginTime</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>loginTime</servlet-name>
    <url-pattern>/time</url-pattern>
  </servlet-mapping>

  <listener>
    <listener-class>top.sehnsucht.TestSessionListener</listener-class>
  </listener>

</web-app>

参考:
https://blog.csdn.net/gsjwxhn/article/details/90707571
https://blog.csdn.net/weixin_40747272/article/details/79655775
https://blog.csdn.net/lovexuwenhao/article/details/83395642?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-1.no_search_link&spm=1001.2101.3001.4242


感谢参与测试的cjb,lxl,ly,ljl

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值