java统计当前在线数

原创 2003年08月08日 08:44:00

package com.hnedu.stat;
/**
 * 计算在线人数,说明:
 *
 * 在访问页面放入:
 * com.hnedu.stat.OnlineCounter.addUser(Object object)
 * 一般用ip来作为object的传入值,当然,如果网站统计登陆在线人数,也可用用户名
 * 来作为object传入值。
 *
 * 调用显示在线人数
 * com.hnedu.stat.OnlineCounter.getOnlineCount() *
 *
 * com.hnedu.stat.OnlineCounter.getOnline()
 * 返回一个List,里面以String[]形式存放传入的object值和最后访问页面时间。
 * by crazyren 2003-08-05 email: c_crazyren@hotmail.com
 */
import java.util.List;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
public class OnlineCounter {
  private static List list = new ArrayList();

  private OnlineCounter() {
  }
  public static void addUser(Object object) {
    //得到用户当前访问时间
    String nowtime = com.hnedu.util.StringUtils.getTime("mm:ss");
    //Str数组用来存放用户得ip和访问时间
    String[] str = new String[2];
    str[0] = object.toString();
    str[1] = nowtime;

    //temp数组用来临时存放从list里面取出的用户ip和访问时间
    String[] temp = new String[2];

    //循环list
    for (int i = 0; i < list.size(); i++) {
      temp = (String[])list.get(i);
      //如果从list里面取出的用户ip和str里面存放的ip相同,则更新访问时间
      if(temp[0].equals(str[0])) {
        list.set(i,str);
        return;
      }
      //如果用户超过5分钟没有访问,则认为不在线
      if(subTime(nowtime,temp[1]) > 300) {
        list.remove(i);
      }
    }
    //添加一个新的在线用户
    list.add(str);
    //释放资源
    str = null;temp = null;
  }

  public static int getOnlineCount() {
    //返回当前在线人数
    return list.size();
  }

  public static List getOnline() {
    return list;
  }
  /** 计算两个时间差,返回相差秒数 */
  private static int subTime(String src,String des) {
    int n = 0;
    java.util.Calendar ca = java.util.Calendar.getInstance();
    long time1 =
      com.hnedu.util.StringUtils.compareStringTime(src,des,"mm:ss");
    ca.setTimeInMillis(time1);
    n = (ca.get(java.util.Calendar.MINUTE)) * 60;
    n = n + ca.get(java.util.Calendar.SECOND);
    return n;
  }
}

 

引用的StringUtils里面的两个方法:

  /**
   * 获得当前时间
   * @param parrten 输出的时间格式
   * @return 返回时间
   */
  public static String getTime(String parrten)
  {
    String timestr;
    if(parrten==null||parrten.equals(""))
    {
      parrten="yyyyMMddHHmmss";
    }
    java.text.SimpleDateFormat sdf=new SimpleDateFormat(parrten);
    java.util.Date cday=new Date();
    timestr=sdf.format(cday);
    return timestr;
  }

  /**
   * 比较两个字符串时间的大小
   * @param t1 时间1
   * @param t2 时间2
   * @param parrten 时间格式 :yyyy-MM-dd
   * @return 返回long =0相等,>0 t1>t2,<0 t1<t2
   */
  public static long compareStringTime(String t1,String t2,String parrten)
  {
      SimpleDateFormat formatter = new SimpleDateFormat (parrten);
      ParsePosition pos = new ParsePosition(0);
      ParsePosition pos1 = new ParsePosition(0);
      Date dt1=formatter.parse(t1,pos);
      Date dt2=formatter.parse(t2,pos1);
      long l=dt1.getTime()-dt2.getTime();
      return l;
  }

Java 实现网站当前在线用户统计

通过SessionListenr可以监听session的创建和销毁,所以首先要写一个类MySessionListener,实现javax.servlet.http.HttpSessionListene...
  • xingxiupaioxue
  • xingxiupaioxue
  • 2015年05月07日 01:17
  • 1248

session监听器(可用于统计在线人数,当前客户)

在系统运行中,有时候我们想了解下当前使用系统的用户,有多少人在使用系统?具体是哪些人在使用系统? 这时候,就可以通过session监听器(javax.servlet.http.HttpSessionA...
  • qq_21439971
  • qq_21439971
  • 2016年05月23日 08:47
  • 9117

javaweb中实现在线人数统计

session并不是浏览器关闭时销毁的,而是在session失效的时候销毁下列代码就是监测session创建、销毁 package com.my.count; import javax...
  • u014756827
  • u014756827
  • 2017年04月14日 10:24
  • 2538

javaWeb 在线人数统计

1.新建一个工程OnlineCount,包结构如下图所示: demo1:新建一个OnlineCounter.java 代码如下:   package com.dr.demo2.serv...
  • zhangxiong0797
  • zhangxiong0797
  • 2014年03月07日 09:15
  • 1357

java web监听器统计在线用户及人数

在线用户使用HttpSessionListener监听器统计   每当一个session会话建立  在线用户人数+1 每当一个session会话销毁 在线用户人数-1 使用Servlet...
  • su20145104009
  • su20145104009
  • 2016年11月18日 16:04
  • 7872

如何统计网站的在线人数呢?

如何统计网站的在线人数呢? 首先很简单的思想就是,如果只针对会员用户进行统计,在登录登出时加判断,然后维护一个表(或者其他存储方式)来存储在线会员即可。 但是有个问题就是,对于正常退出的会员当然可...
  • u012639466
  • u012639466
  • 2016年12月13日 23:19
  • 2238

jsp+servlet+java 实现统计在线人数,在线用户

 大家好,这是我第一次写博客 ,写的不好还请见谅,呵呵 我今天一直在弄关于统计在线人数和在线用户的问题,,在网上找了好多,但是没有太好的,,多优点差强人意,所以我就自己弄了弄  ,现在我把代码帖出来,...
  • lpdx111
  • lpdx111
  • 2008年12月05日 23:42
  • 1602

java实现在线用户统计

我们一般的问法是这样:在一个门户网站,且没有登录的情况下要如何统计出在线人数。很多人给我的答案大多是拦首页等或别的页面,当然这个是不行的。还有的答法是用过滤器,这个或许可以,但至今我没有试过。 我们...
  • u012173884
  • u012173884
  • 2015年06月02日 09:23
  • 1098

javaEE之--------统计网站在线人数,安全登录等(观察者设计模式)

总体介绍下:  监听器:监听器-就是一个实现待定接口的普通Java程序,此程序专门用于监听别一个类的方法调用。都是使用观察者设计模式。 小弟刚接触这个,做了些简单的介绍,大神请绕道,技术只是一...
  • yangxin_blog
  • yangxin_blog
  • 2016年01月02日 13:10
  • 3668

PHP统计当前在线人数

PHP统计当前在线人数 一、开发环境 1、Windows+Apache+MySQL+PHP的环境。 2、文本编辑器:Sublime。 二、主要技术 PHP 三、具体步骤 本文主要是通过I...
  • mico_cmm
  • mico_cmm
  • 2016年11月10日 21:45
  • 2573
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java统计当前在线数
举报原因:
原因补充:

(最多只允许输入30个字)