import   javax.servlet.http.*;   
import   javax.servlet.*;   
import   java.util.*;   
public   class   onLineUser   implements   HttpSessionBindingListener   {   
public   onLineUser(){   
}   
private   Vector   users=new   Vector();   
public   int   getCount(){   
users.trimToSize();   
return   users.capacity();   
}   
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());   
}else   
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());   
}   
}   
<%@   page   contentType= "text/html;charset=gb2312 "   %>   
<%@   page   import= "onLineUser,java.util.* "   %>   
<jsp:useBean   id= "onlineuser "   class= "onLineUser "   scope= "application "/>   
<html>   
<head>   
<title> 搞定JSP在线人数 </title>   
</head>   
<body>   
<center>   
<p> <h1> 登陆成功,欢迎您访问Java家! </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);   //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> ");   
}   
out.println( " </table> ");   
%>   
<center>   
<p> yuking制作 </p>   
<p>   </p>   
<%   
out.println( " <p> <a   href=logout.jsp?username= "+username+ "> 退出系统 </a> </p> ");   
%>   
</center>   
</body>   
</html>   
<%@   page   contentType= "text/html;charset=gb2312 "   %>   
<%@   page   import= "onLineUser,java.util.* "   %>   
<jsp:useBean   id= "onlineuser "   class= "onLineUser "   scope= "application "/>   
<html>   
<head>   
<title> 搞定JSP在线人数 </title>   
</head>   
<body>   
<center>   
<p> <h1> 登陆成功,欢迎您访问Java家! </h1> </p>   
</center>   
<%   
String   username=request.getParameter( "username ");   
if(onlineuser.deleteUser(username))   
out.println(username+ "已经退出系统! ");   
else   
out.println(username+ "没有登陆到系统! ");   
%>   
<center>   
<p> yuking制作 </p>   
<p>   </p>   
<p> <a   href= "logout.jsp "> 退出系统 </a> </p>   
</center>   
</body>   
</html> 
两个问题: 
1.   线程同步。 
2.   并不是每个人浏览网站时,都早早注册了,并登陆后,再浏览。