Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 392|回复: 0

[jsp学习]java统计当前在线人数

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 06:01:25 | 显示全部楼层 |阅读模式
    站长学习“java统计当前在线人数”文章的练习。请下载源码实践。
      

      
      
    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;
       }  

      



                            function TempSave(ElementID)
                            {
                                    CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
                                    CommentsPersistDiv.save("CommentXMLStore");
                            }
                            function Restore(ElementID)
                            {
                                    CommentsPersistDiv.load("CommentXMLStore");
                                    document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
                            }
                   
                      











    源码下载:http://file.javaxxz.com/2014/10/1/060125188.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-6 17:22 , Processed in 0.376872 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表