前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HttpSessionListener:统计在线人数

HttpSessionListener:统计在线人数

作者头像
the5fire
发布2019-02-28 10:28:29
2K0
发布2019-02-28 10:28:29
举报

上文 一样,这个接口也是用于监听服务器端变化的,不过它监听的是HttpSession的变化。那么这个HttpSession是干嘛的呢?大家可以参看这里: 深入理解HTTP Session http://lavasoft.blog.51cto.com/62575/275589

从我链接的那篇文章里可以知道每当有一个用户访问JSP页面,服务器端便可创建一个Session,而这个Session的消失时间一般都用户不进行任何动作20分钟之后,或者是你服务器端直接关闭,不过这种可能性很小。 所以基于上述原理我们就可以写一个统计在线人数的小Demo: 首先建一个实体类Counter.java来记录在线人数:

.. code:: java

package com.listener;

/**
 * 当前在线人数实体类
 * @author 胡阳
 *
 */
public class Counter {

    private static long online = 0;

    public static long getOnline() {
        return online;
    }

    public static void raise(){
        online++;
    }

    public static void reduce(){
        online--;
    }

}

接着就是HttpSessionListener接口的实现OnlineCounterListener.java:

.. code:: java

package com.listener;

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

/**
 * 统计在线人数
 * @author 胡阳
 *
 */
public class OnlineCounterListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
        //增加一个
        Counter.raise();
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
        //减少一个
        Counter.reduce();
    }

}

其实在这段代码里面,你可以对当前登录人数进行判断,也就是判断Session中的值是否是已注册成员。这里只是简单的统计在线人数。

然后还是配置web.xml文件:

::

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <listener>
        <listener-class>com.listener.OnlineCounterListener</listener-class>
    </listener>
</web-app>

接着是index.jsp:

::

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ page import="com.listener.*" %>
<%
    long num = Counter.getOnline();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
我是打酱油的,当前在线人数为:<%=num %>
<body>
</body>
</html>

这样就完成了当前在线人数的统计,你可以测试一下,用chrome访问一个这个index.jsp,然后用ie在访问一下看看结果。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-01-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档