收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 

交流首页 » Web前端技术 »高访问量情况下怎么统计在线人数  XML
发表人 内容
mianhua520
[头像]

交流经验:
总积分:175
级别:普通会员
注册时间: 2014-05-23
文章: 5
离线

高访问量情况下怎么统计在线人数?可以这样:

java统计在线人数

对于登录信息时使用session存储的,所以我这里是通过实现HttpSessionAttributeListener这个接口完成的。

1、实现接口类,在web.xml文件中配置监听类,从而可以使该类完成其工作。

 

java代码:
public class SessionListener implements HttpSessionAttributeListener  
  {  
  public void attributeAdded(HttpSessionBindingEvent event)  
  {  
  if (event.getName().equals("userid"))  
  {  
  try  
  {  
  OnlineCounter.doUser(event.getValue(),false);  
  } catch (Exception e)  
  {  
  e.printStackTrace();  
  }  
  }  
  }  
  public void attributeRemoved(HttpSessionBindingEvent event)  
  {  
  if (event.getName().equals("userid"))  
  {  
  try  
  {  
  OnlineCounter.doUser(event.getValue(),true);  
  } catch (Exception e)  
  {  
  e.printStackTrace();  
  }  
  }  
  }  
  public void attributeReplaced(HttpSessionBindingEvent event)  
  {  
  }  
  }  


2、要做的就是实现任务类OnlineCounter了

 

java代码:
public class OnlineCounter  
  {  
  private static List list = new ArrayList();  
  private static List list1 = new ArrayList();  
  private OnlineCounter() {  
  }  
  // 统计当前在线会员人数  
  public static void doUser(Object object,boolean bl) {  
  //得到用户当前访问时间  
  String nowtime = getTime("mm:ss");  
  //Str数组用来存放用户的id和访问时间  
  String[] str = new String;  
  str[0] = object.toString();  
  str[1] = nowtime;  
  //temp数组用来临时存放从list里面取出的用户的id和访问时间  
  String[] temp = new String;  
  //循环list  
  for (int i = 0; i < list.size(); i++) {  
  temp = (String[])list.get(i);  
  //如果从list里面取出的用户ip和str里面存放的id相同,则更新访问时间  
  if(bl==false && temp[0].equals(str[0])) {  
  list.set(i,str);  
  return;  
  }  
  //如果监听类中穿过来bl==true,则认为不在线  
  if(bl==true && temp[0].equals(str[0]))  
  {  
  list.remove(i);  
  }  
  }  
  //添加一个新的在线用户  
  if(bl==false)  
  list.add(str);  
  //释放资源  
  str = null;temp = null;  
  }  
  //统计网站所有在线人数  
  public static void allUser(Object object) {  
  //得到用户当前访问时间  
  String nowtime = getTime("mm:ss");  
  //Str数组用来存放用户得ip和访问时间  
  String[] str = new String;  
  str[0] = object.toString();  
  str[1] = nowtime;  
  //temp数组用来临时存放从list里面取出的用户ip和访问时间  
  String[] temp = new String;  
  //循环list  
  for (int i = 0; i < list1.size(); i++) {  
  temp = (String[])list1.get(i);  
  //如果从list里面取出的用户ip和str里面存放的ip相同,则更新访问时间  
  if( temp[0].equals(str[0])) {  
  list1.set(i,str);  
  return;  
  }  

 

转自:http://bbs.ibeifeng.com/read-htm-tid-65893.html

这篇文章被编辑了 4 次. 最近一次更新是在 2014-05-30 17:27:04


推广链接
精品视频课程推荐

Java数据结构和算法精讲版
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

透彻理解JavaBean视频教程
深入浅出的讲解JavaBen的写法、JavaBean的用法、JavaBean的实现机制、JavaBean对应翻译的代码理解。

深入浅出学Shrio视频教程
内容概述:Shiro是目前最热门、最易用、功能超强大的Java权限管理框架,强烈推荐,每个项目都必备的权限管理技术!通过本课程,你将从零开始直到彻底掌握Shiro的相关开发知识,达到可以进行实际项目开发的能力。包括:权限管理基础、Shiro入门、配置、身份认证、授权、Realms、Session管理、和Spring的集成、Web、Cache等众多开发细节技术 技术要点:源码级分析Shiro的授权过程、自定义开发Realm、多个Realms的开发配置、自定义开发AuthenticationStrategy、自定义开发自定义SessionDAO、和Struts2+Spring3的集成(包括修正struts2的bug)、Shiro和SpringMVC+Spring3的集成、包装使用其他的Cache框架、缓存数据同步更新的解决方案等等实际开发中常用的内容

Ajax+JSON基础实战视频教程
数据校验、Javascript模拟多线程、下拉列表联动、操作XML、AJAX结合JSON的操作、Json-lib的使用

Javascript基础视频教程
JavaScript的内置对象--Array、String、Date、Math等,可以通过DOM对象进行对象控制,创建控制菜单及复选框的控制,创建二级联动列表框及列表框选项的移动,JavaScript项目,创建基于JS的商品管理系统。



个性签名:http://www.ibeifeng.com/
 
交流首页 » Web前端技术
前往:   

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网