收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 

交流首页 » 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来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

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

研磨设计模式——跟着cc学设计系列视频教程
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力 技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......

深入浅出学Spring Web MVC视频教程
系统、完整的学习Spring Web MVC开发的知识。包括:Spring Web MVC入门;理解DispatcherServlet;注解式控制器开发详解;数据类型转换;数据格式化;数据验证; 拦截器;对Ajax的支持;文件上传下载;表单标签等内容;最后以一个综合的CRUD带翻页的应用示例来综合所学的知识

最新jbpm4工作流开发实战视频教程
从零到精通jBPM的开发知识;理解工作流的理论、掌握自行开发工作流的思路、系统学习使用jBPM来实现工作流应用、掌握jBPM和Web项目的结合、掌握一些实际开发中典型的业务实现(会签、委托等)



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

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

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