java判断用户是否在线demo

下面为我的测试例子,首先建个web工程,例子中程序包括:OnLineUser.java ,login.jsp ,logout.jsp,onLineUser.jsp四个文件

OnLineUser.java清单:

Java代码   收藏代码
  1. /**//* 
  2. * onLineUser类实现HttpSessionBindingListener接口 
  3. * onLineUser类将具有HttpSessionBindingListener接口的特有属性 
  4. * 那么HttpSessionBindingListener接口的特有属性是什么呢? 
  5. * HttpSessionBindingListener接口具有的两个空函数 
  6. * public void valueBound(HttpSessionBindingEvent e) 
  7. * public void valueUnBound(HttpSessionBindingEvent e) 
  8.  
  9. * onLineUser实现一些方法:获取在线用户数 
  10.  
  11. */  
  12.   
  13. import javax.servlet.http.*;   
  14. import java.util.*;  
  15.   
  16. public class OnLineUser implements HttpSessionBindingListener{   
  17.      
  18.    public OnLineUser(){  
  19.    }  
  20.   
  21.    private Vector users=new Vector();  
  22.    public int getCount(){  
  23.        users.trimToSize();//调整Vector users的容量为Vector users的大小  
  24.        return users.capacity();//返回users的容量  
  25.    }  
  26.    public boolean existUser(String userName){  
  27.        users.trimToSize();  
  28.        boolean existUser=false;  
  29.        for (int i=0;i<users.capacity();i++ )  
  30.        {  
  31.            if (userName.equals((String)users.get(i)))  
  32.            {  
  33.                existUser=true;  
  34.                break;  
  35.            }  
  36.        }  
  37.        return existUser;  
  38.    }  
  39.   
  40.    public boolean deleteUser(String userName){  
  41.        users.trimToSize();  
  42.        if(existUser(userName)){  
  43.            int currUserIndex=-1;  
  44.            for(int i=0;i<users.capacity();i++){  
  45.                if(userName.equals((String)users.get(i))){  
  46.                    currUserIndex=i;  
  47.                    break;  
  48.                }  
  49.            }  
  50.            if (currUserIndex!=-1){  
  51.                users.remove(currUserIndex);  
  52.                users.trimToSize();  
  53.                return true;  
  54.            }  
  55.        }  
  56.        return false;  
  57.    }  
  58.   
  59.    public Vector getOnLineUser()  
  60.    {  
  61.        return users;  
  62.    }  
  63.      
  64.    public void valueBound(HttpSessionBindingEvent e) ...{   
  65.        users.trimToSize();  
  66.        System.out.println("请求:::::::::::"+e.getName());  
  67.     if(!existUser(e.getName())){  
  68.         users.add(e.getName());  
  69.         System.out.print(e.getName()+"    登入到系统 "+(new Date()));  
  70.         System.out.println("      在线用户数为:"+getCount());  
  71.     }else{  
  72.         System.out.println(e.getName()+"已经存在");  
  73.         }  
  74.    }   
  75.   
  76.    public void valueUnbound(HttpSessionBindingEvent e) ...{   
  77.     users.trimToSize();  
  78.     String userName=e.getName();  
  79.     deleteUser(userName);  
  80.     System.out.print(userName+"    退出系统 "+(new Date()));  
  81.     System.out.println("      在线用户数为:"+getCount());  
  82.    }   
  83.      
  84.      
  85. }   


login.jsp 清单:

Java代码   收藏代码
  1. <%@ page contentType="text/html;charset=gb2312" %>   
  2. <html>  
  3. <head>  
  4. <title>测试HttpSessionBindingListener接口</title>  
  5. </head>  
  6.   
  7. <body>  
  8. <form name="login" method="post" action="onLineUser.jsp">  
  9. <input type=text name="username">  
  10. <input type=submit name="submit" value="登陆">  
  11. </form>  
  12. </body>  
  13. </html>  


logout.jsp清单:

Java代码   收藏代码
  1. <%@ page contentType="text/html;charset=gb2312" %>   
  2. <%@ page import="pub.OnLineUser,java.util.*" %>   
  3. <jsp:useBean id="onlineuser" class="pub.OnLineUser" scope="application"/>  
  4. <html>   
  5. <head>   
  6. <title>搞定JSP在线人数</title>  
  7. </head>  
  8. <body>   
  9. <center>   
  10. <h1>登陆成功,欢迎您访问!</h1>  
  11. </center>  
  12. <%  
  13.    String username=request.getParameter("username");  
  14.    if(username!=null&&onlineuser.deleteUser(username)){  
  15.        out.println(username+"已经退出系统!");  
  16.        session.removeAttribute(username);  
  17.        out.println("<script>window.location="login.jsp";</script>");  
  18.    }else{  
  19.        out.println(username+"已经退出系统!");  
  20.        out.println("<script>window.location="login.jsp";</script>");  
  21.    }  
  22. %>   
  23. <center>   
  24. <p>elapsed制作</p>  
  25. <p> </p>  
  26. <p><a href="logout.jsp">退出系统</a></p>  
  27. </center>   
  28. </body>   
  29. </html>  


onLineUser.jsp清单
Java代码   收藏代码
  1. <%@ page contentType="text/html;charset=gb2312" %>   
  2. <%@page import="java.util.*,pub.*"%>  
  3. <jsp:useBean id="onlineuser" class="pub.OnLineUser" scope="application" />  
  4. <html>   
  5. <head>   
  6. <title>搞定JSP在线人数</title>  
  7. </head>  
  8. <body>   
  9. <center>   
  10. <h1>登陆成功,欢迎您访问!</h1>  
  11. </center>  
  12. <% session = request.getSession(false); %>   
  13. <%  
  14.    String username=request.getParameter("username");  
  15.    if (onlineuser.existUser(username)){  
  16.        out.println("用户<font color=red>"+username+"</font>已经登陆!");  
  17.    }else{  
  18.        session.setMaxInactiveInterval(600);//Sesion有效时长,以秒为单位  
  19.        session.setAttribute(username,onlineuser);   
  20.        out.println("欢迎新用户:<font color=red>"+username+"</font>登陆到系统!");  
  21.    }  
  22.    out.println("<br>当前在线用户人数:<font color=red>"+onlineuser.getCount()+"</font><br>");  
  23.    Vector vt=onlineuser.getOnLineUser();  
  24.    Enumeration e = vt.elements();  
  25.    out.println("在线用户列表");  
  26.    out.println("<table border=1>");  
  27.    out.println("<tr><td>用户名</td></tr>");  
  28.    /*while(e.hasMoreElements()){ 
  29.        out.println("<tr><td>"); 
  30.        out.println((String)e.nextElement()+"<br>"); 
  31.        out.println("</td></tr>"); 
  32.    } 
  33.    下面的方法也是可以的,这两种方法都是可行的,其实Iterator是Enumeration的子类 
  34.    */  
  35.    for(Iterator it=vt.iterator();it.hasNext();){  
  36.        out.println("<tr><td>");  
  37.        out.println((String)it.next()+"<br>");  
  38.        out.println("</td></tr>");  
  39.    }  
  40.    out.println("</table>");  
  41.        
  42. %>   
  43. <center>   
  44. <p>elapsed制作</p>  
  45. <p> </p>  
  46. <%  
  47.    out.println("<p><a href=''logout.jsp?username="+username+"''>退出系统</a></p>");  
  48. %>  
  49. </center>   
  50. </body>   
  51. </html> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值