jsp在线人数统计

来源:互联网 发布:龙之信条帅哥捏脸数据 编辑:程序博客网 时间:2024/04/27 19:50

1.用session超时,session为null就表示下线了  
 
2.也可以采用数据库中设置  临时表  来处理  
一个用户登陆时向表中插进一条记录,用户离开时候删除该记录  
如想统计在线人数,简单地执行  
select  count(*)  from  table...  即可  
 
3.application对象中可以记住现在的人数,application的生命周期和服务器的生命周期一样长。  
 
4.还有一种方法要用到一个文件global.jsa  ,方法是(在JSP中)是sessionDestroy(),其中它是以session对象为参数的。还有要把global.jsa文件必须房子和JSP程序相同的文件目录内才行。  
 
5.网页自动刷新的代码是:  
在文件头部加上  
<meta  http-equiv="refresh"  content="15">  
刷新间隔时间是15秒  
 
 
6.在session中加入监听类,类的示例代码如下:  
 
onLineUser.java  
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());  
           }  
}  
 
jsp:  
<%@  page  contentType="text/html;charset=gb2312"  %>    
<%@  page  import="java.util.*"  %>    
<jsp:useBean  id="onlineuser"  class="temp.jb.onLineUser"  scope="application"/>  
<html>    
<head>    
</head>  
<body  onUnload="postMessage()">    
<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);  //Sesion有效时长,以秒为单位  
               session.setAttribute(username,onlineuser);    
               out.println("欢迎新用户:<font  color=red>"+username+"</font>登陆到系统!");  
       }  
       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>]  
<%  
       out.println("<p><a  href='logout.jsp?username="+username+"'>退出系统</a></p>");  
%>  
</center>    
<Script>  
           function  postMessage(){                                
                           <%onlineuser.deleteUser(request.getParameter("username"));%>  
     }  
</Script>  
</body>    
</html>

 

 

出自:http://www.home123.com.cn/FAQ/jsp/619.html 

原创粉丝点击