jsp网页中统计在线人数问题~~~~急~~~~~~~~~~~
package crm;
import javax.servlet.http.*;
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());
}
}
jsp:
<%@ page contentType= "text/html;charset=UTF-8 " %>
<%@ page import= "java.util.* " %>
<jsp:useBean id= "onlineuser " class= "crm.OnlineUser " scope= "application "/>
<html>
<head>
</head>
<body>
<center>
<p> <h1> 登陆成功,欢迎访问 </h1> </p>
</center>
<%
out.println( " <br> 当前在线用户人数: <font color=red> "+onlineuser.getCount()+ " </font> <br> ");
/*String ip = request.getRemoteAddr();
out.println( " <br> IP: <font color=red> "+ip+ " </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> </p>
[ <a href= "javascript:window.close() "> 关闭窗口 </a> ]
</center>
</body>
</html>
为什么,每次得到的getCount()都是0
[解决办法]
登陆成功后加入登陆用户了吗?没看见由addUser什么的
[解决办法]
给个邮箱 发你一个阿建计数
[解决办法]
private Vector users=new Vector();
Vector vt=onlineuser.getOnLineUser();
这个方法好像返回一个新的Vector,并没有向vector中放数据.当然为0喽.
[解决办法]
关注~~~学习加顶上~~~~
[解决办法]
恭喜,恭喜,一来就看到解决问题了~~~~