JAVA 获取在线用户数的方法

在互联网的应用中,通常需要统计当前时间使用系统的人数,用来衡量网络的使用量以及稳定性的数据,如何实现这种功能呢,其实通过 java servlet listener 就可以实现,下面是实现的方法.
1. 编写 扩展实现 HttpSessionListener 接口.
2. 在web.xml 中配置listener.

第一步,编写如下扩展
程序代码 程序代码

import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpSessionAttributeListener;  
import javax.servlet.http.HttpSessionBindingEvent;  
import javax.servlet.http.HttpSessionBindingListener;  
import javax.servlet.http.HttpSessionEvent;  
import javax.servlet.http.HttpSessionListener;  
  
public class OnlineCounter extends HttpServlet implements HttpSessionListener,  
    HttpSessionAttributeListener,HttpSessionBindingListener {  
  public OnlineCounter(){  
    System.out.println("OnlineCounter initialized.");  
  }  
  private static final long serialVersionUID = 1L;  
  
  private static int sessionCounter = 0;  
  
  private static int attributeCounter = 0;  
  
  public void sessionCreated(HttpSessionEvent se) {  
    sessionCounter++;  
    System.out.println("session created");  
  }  
  
  public void sessionDestroyed(HttpSessionEvent se) {  
    sessionCounter--;  
    System.out.println("session destroied");  
  }  
  
  public void attributeAdded(HttpSessionBindingEvent se) {  
    attributeCounter++;  
    System.out.println("attribute added");  
  }  
  
  public void attributeRemoved(HttpSessionBindingEvent se) {  
    attributeCounter--;  
    System.out.println("attribute removed");  
  }  
  
  public void attributeReplaced(HttpSessionBindingEvent se) {  
    System.out.println(se.getName()+" replaced");  
  }  
    
  public void valueBound(HttpSessionBindingEvent event){  
      System.out.println(event.getName()+"_Bound_"+event.getValue());  
  }  
  
  public void valueUnbound(HttpSessionBindingEvent event) {  
    System.out.println(event.getName()+"_Unbound_"+event.getValue());  
  }  
  
  public static int getOnlineSession() {  
    return sessionCounter;  
  }  
  public static int getOnlineAttribute() {  
    return attributeCounter;  
  }  
}  


第二步:在web.xml 中配置:
程序代码 程序代码

<listener>
<listener-class>com.yihaomen.OnlineCounter</listener-class>
</listener>


在需要显示的地方调用方法 OnlineCounter.getOnlineSession(), 就可以得到当前的在线人数。

除非申明,文章均为一号门原创,转载请注明本文地址,谢谢!
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 1 | 引用: 0 | 查看次数: -
回复回复大飞[2015-04-04 09:34 PM | del]
好像不对啊!获取不到  QQ 522351468
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.