读书人

jsp网页中统计在线人数有关问题~

发布时间: 2012-03-11 18:15:38 作者: rapoo

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喽.
[解决办法]
关注~~~学习加顶上~~~~

[解决办法]
恭喜,恭喜,一来就看到解决问题了~~~~

读书人网 >Java Web开发

热点推荐