`
ajax_xu
  • 浏览: 154873 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

在线人数统计

阅读更多
使用HttpSessionBindingListener获取在线用户人数及名单                                     

实质:
HttpSessionBindingListener接口有两方需要实现的方法:
public synchronized void valueBound(HttpSessionBindingEvent httpsessionbindingevent)
public synchronized void valueUnbound(HttpSessionBindingEvent httpsessionbindingevent)
Session创建的时候Servlet容器将会调用valueBound方法;Session删除的时候则调用valueUnbound方法.

package pub;
/*
* onLineUser类实现HttpSessionBindingListener接口
* onLineUser类将具有HttpSessionBindingListener接口的特有属性
* 那么HttpSessionBindingListener接口的特有属性是什么呢?
* HttpSessionBindingListener接口具有的两个空函数
* public void valueBound(HttpSessionBindingEvent e)
* public void valueUnBound(HttpSessionBindingEvent e)
*
* onLineUser实现一些方法:获取在线用户数
*
*/
import javax.servlet.http.*;
import java.util.*;
public class onLineUser implements HttpSessionBindingListener {
 
   public onLineUser(){
   }
   private Vector users=new Vector();
   public int getCount(){
       users.trimToSize();//调整Vector users的容量为Vector users的大小
       return users.capacity();//返回users的容量
   }
   public boolean existUser(String userName){
       users.trimToSize();
       boolean existUser=false;
       for (int i=0;i<users.capacity();i++ )
       {
           if (userName.equals((String)users.get(i)))
           {
               existUser=true;
               break;
           }
       }
       return existUser;
   }
   public boolean deleteUser(String userName) {
       users.trimToSize();
       if(existUser(userName)){
           int currUserIndex=-1;
           for(int i=0;i<users.capacity();i++){
               if(userName.equals((String)users.get(i))){
                   currUserIndex=i;
                   break;
               }
           }
           if (currUserIndex!=-1){
               users.remove(currUserIndex);
               users.trimToSize();
               return true;
           }
       }
       return false;
   }
   public Vector getOnLineUser()
   {
       return users;
   }
 
   public void valueBound(HttpSessionBindingEvent e) {
       users.trimToSize();
    if(!existUser(e.getName())){
        users.add(e.getName());
        //System.out.print(e.getName()+"\t   登入到系统\t"+(new Date()));
        //System.out.println("      在线用户数为:"+getCount());
    }
        //System.out.println(e.getName()+"已经存在");
   }

   public void valueUnbound(HttpSessionBindingEvent e) {
    users.trimToSize();
    String userName=e.getName();
    deleteUser(userName);
    //System.out.print(userName+"\t   退出系统\t"+(new Date()));
    //System.out.println("      在线用户数为:"+getCount());
   }
 
   /*public static void main(String[] args)
   {
     onLineUser onlineUser=new onLineUser();
     System.out.println(onlineUser.getCount());
   }*/
}

////////////////////////////////////////////////////////////////////
<%
/**这是显示在线用户的jsp文件
文件名为onLineUser.jsp
*/
%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@page import="java.util.*,pub.*"%>
<jsp:useBean id="onlineuser" class="pub.onLineUser" scope="application" />
<html>
<head>
<title>搞定JSP在线人数</title>
</head>
<body>
<center>
  <p><h1>登陆成功,欢迎您访问!</h1></p>
</center>
<%   session = request.getSession(false); %>
<%
   String username=request.getParameter("username");
   if (onlineuser.existUser(username)){
       out.println("用户<font color=red>"+username+"</font>已经登陆!");
   }else{
       session.setMaxInactiveInterval(50); //file://Sesion有效时长,以秒为单位
       session.setAttribute(username,onlineuser);
       out.println("欢迎新用户:<font color=red>"+username+"</font>登陆到系统!");
   }
   out.println("<br>当前在线用户人数:<font color=red>"+onlineuser.getCount()+"</font><br>");
   Vector vt=onlineuser.getOnLineUser();
   Enumeration e = vt.elements();
   out.println("在线用户列表");
   out.println("<table border=1>");
   out.println("<tr><td>用户名</td></tr>");
   /*while(e.hasMoreElements()){
       out.println("<tr><td>");
       out.println((String)e.nextElement()+"<br>");
       out.println("</td></tr>");
   }
   下面的方法也是可以的,这两种方法都是可行的,其实Iterator是Enumeration的子类
   */
   for(Iterator it=vt.iterator();it.hasNext();){
       out.println("<tr><td>");
       out.println((String)it.next()+"<br>");
       out.println("</td></tr>");
   }
   out.println("</table>");
   
%>
<center>
  <p>elapsed制作</p>
  <p> </p>
<%
   out.println("<p><a href='logout.jsp?username="+username+"'>退出系统</a></p>");
%>
</center>
</body>
</html>
///////////////////////////////////////////////////////////////
<%
/**这是用户退出的jsp文件
文件名为logout.jsp
*/
%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="pub.onLineUser,java.util.*" %>
<jsp:useBean id="onlineuser" class="pub.onLineUser" scope="application"/>
<html>
<head>
<title>搞定JSP在线人数</title>
</head>
<body>
<center>
  <p><h1>登陆成功,欢迎您访问!</h1></p>
</center>
<%
   String username=request.getParameter("username");
   if(onlineuser.deleteUser(username)){
       out.println(username+"已经退出系统!");
       out.println("<script>window.location=\"login.jsp\";</script>");
   }else{
       out.println(username+"没有登陆到系统!");
   }
%>
<center>
  <p>elapsed制作</p>
  <p> </p>
  <p><a href="logout.jsp">退出系统</a></p>
</center>
</body>
</html>

///////////////////////////////////////////
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>测试HttpSessionBindingListener接口</title>
</head>
<body>
<form name="login" method="post" action="onLineUser.jsp">
<input type=text name="username">
<input type=submit name="submit" value="登陆">
</form>
</body>
</html>
分享到:
评论

相关推荐

    梦缘在线人数统计

    《梦缘在线人数统计》 在信息技术领域,网站或应用的在线人数统计是评估其活跃度和用户参与度的重要指标。这个项目名为“梦缘在线人数统计”,它可能是一个源代码实现,用于实时或者定期计算并展示用户在特定平台上...

    在线人数统计程序.rar

    在线人数统计程序是一种常见的Web应用程序功能,用于估算和记录网站同时活跃用户数量。这个"在线人数统计程序.rar"是一个特别设计的解决方案,它无需依赖Global.asa文件,这对于那些不支持或限制使用此文件的免费Web...

    在线人数统计 在线统计

    在线人数统计是网络应用和服务中一个重要的组成部分,它主要用于了解网站、应用或者服务器在某一时间段内的用户活跃情况。在线人数统计通常涉及到多个技术层面,包括数据采集、处理、存储以及展示。下面将详细阐述...

    在线人数统计 在线人数统计

    在线人数统计是网站运营中的重要指标,用于了解网站的活跃度和用户参与度。下面将详细解释这个领域的几个关键知识点: 1. **Web应用程序结构**: - `Global.asax` 文件:这是一个ASP.NET应用程序的全局应用事件...

    网页在线人数统计

    网页在线人数统计是网站运营和分析中的重要指标,它能够帮助网站管理员了解当前网站的活跃度,优化资源分配,以及调整服务策略。在ASP(Active Server Pages)编程中,我们可以利用Application对象和Session对象来...

    javaweb开发在线人数统计

    Java Web 开发在线人数统计 在线人数统计是 Java Web 开发中一个常见的功能,当一个用户登录后,显示欢迎信息,同时显示出当前在线的总人数和用户名单。当一个用户退出登录或者 Session 超时值发生时,从在线用户...

    准确在线人数统计准确在线人数统计

    在线人数统计是网络服务运营中的重要指标,它可以帮助管理者了解网站、应用或游戏等平台的实时活跃用户数量,为优化用户体验、制定营销策略提供数据支持。准确的在线人数统计不仅涉及技术实现,还涵盖多种技术和策略...

    监听器实现在线人数统计

    此外,需要注意的是,基于Session的在线人数统计可能会存在一些问题,例如用户关闭浏览器但未正式登出,此时Session可能会因浏览器关闭而意外结束,导致在线人数统计不准确。为了解决这个问题,可以结合应用服务器的...

    ASP.NET Application在线人数统计实例

    ASP.NET Application在线人数统计实例是基于ASP.NET框架开发的一个实用功能,用于实时追踪并展示网站当前的在线用户数量。在互联网应用中,了解系统活跃用户数对于优化用户体验、数据分析以及资源管理都至关重要。本...

    基于_NET内置对象的在线人数统计

    【标题】: "基于.NET内置对象的在线人数统计" 【描述】: "本文将探讨如何利用ASP.NET的主要内置对象,尤其是Cookie、Session和Application对象,来实现在线人数的动态统计,以此来跟踪当前站点的访问量。" 【标签...

    在线人数统计程序(JSP)

    在线人数统计程序是Web开发中一个常见的功能,用于实时显示网站当前在线用户的数量。这个程序通常基于服务器端的技术实现,例如JavaServer Pages (JSP)。JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java...

    用户在线人数统计

    在IT行业中,实时在线人数统计是一项重要的功能,尤其对于Web应用程序和网站来说,它能够帮助运营者了解网站的活跃程度,优化服务,并进行数据分析。在本案例中,我们将讨论如何简单实现一个基于AVAWEB(假设是某种...

    java web在线人数统计/监听

    Java Web在线人数统计是Web应用程序中常见的需求,用于获取当前网站活跃用户数量。这个功能的实现通常基于HTTP协议的工作机制,特别是对Session的管理和监听。本文将深入探讨如何使用Java Web技术来监听并统计在线...

    JSP 在线人数统计的实现

    **JSP 在线人数统计的实现** 在Web开发中,实时在线人数统计是一项常见的需求,它可以帮助网站管理员了解当前有多少用户正在访问网站,以便优化资源分配和服务质量。JSP(JavaServer Pages)作为Java Web开发的重要...

    在线人数统计 v1.0

    《在线人数统计 v1.0》是一个用于实时统计网站在线用户数量的应用程序,适用于需要监控网站活跃度的场景。此程序包含源代码,允许开发者进行自定义和扩展,以适应不同项目的具体需求。 首先,我们需要了解数据库的...

    netty-socket实时在线人数统计

    本文将深入探讨如何使用SpringBoot 2.0与Netty-socket来实现一个实时在线人数统计的功能,并涉及到WebSocket协议的相关知识。 **SpringBoot 2.0** SpringBoot是Spring框架的一个轻量级容器,它简化了Spring应用...

    PHP+TXT在线人数统计

    【PHP+TXT在线人数统计】是一种常见的网站访问统计方法,主要通过PHP脚本与文本文件(TXT)交互来实现对当前在线用户数量的实时记录。这种方法适用于小型网站或个人项目,因为它简单易行且资源消耗较低。下面我们将...

    people_static.rar_people_在线人数_在线人数统计

    在线人数统计是网站运营中一个重要的指标,它可以帮助网站管理员了解网站的活跃度和用户参与度。本套工具名为"people_static.rar_people_在线人数_在线人数统计",旨在为网站提供一个简单易用的在线人数实时统计解决...

    ASP中如何实现同时在线人数统计

    要实现在线人数统计,首先需要在全局.asa文件或相应的ASP页面中设置以下代码: ```asp Sub Session_OnStart application("online") = application("online") + 1 End Sub Sub Session_OnEnd application("on...

    在线人数统计程序

    在线人数统计程序是一种常见的Web应用程序功能,用于实时显示网站或应用程序当前在线用户的数量。这个程序的设计巧妙地避开了对Global.asa文件的依赖,使得它能在那些不支持或限制使用此文件的免费Web托管环境中正常...

Global site tag (gtag.js) - Google Analytics