Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37386
  • 博文数量: 14
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-14 13:14
文章分类

全部博文(14)

文章存档

2008年(14)

我的朋友

分类: 系统运维

2008-12-04 09:45:38

   使用session实现在线统计,可以实现HttpSessionListener接口来监听session的创建与销毁。注:当关闭浏览器窗口的时候,不能立即捕获session的销毁,只有等服务器端session失效(由session timeout决定)才捕获。
   注:由于系统中使用ajax在后台刷新所以保证了session永远不会失效,除非关闭浏览器或退出系统。
   在src下创建listener实现类:
import java.util.ArrayList;
import java.util.List;

//该类实现session数量的增加与减少及创建存储记录用户信息的列表
public class Counter {
    private static long online = 0;
    //用于记录session的数量
    private static List sessList = new ArrayList();
    //创建list用于存储在线用户列表
    
    public static List getSessList(){
        return sessList;
    }
    public static long getOnline() {
        return online;
    }
    //session数量加一
    public static void raise() {
        online++;
        System.out.println("current create:"+online);
    }

    //session数量减一
    public static void reduce() {
        online--;
        System.out.println("current destroy:"+online);
    }
}


实现HttpSessionListener接口:
import javax.servlet.*;
import javax.servlet.http.*;

public class CountSession implements HttpSessionListener {
    public synchronized void sessionCreated(HttpSessionEvent se) {
 //在记录列表中保存session       Counter.getSessList().add(se.getSession());
        Counter.raise();
    }

    public synchronized void sessionDestroyed(HttpSessionEvent se) {
        //在记录列表中移除session Counter.getSessList().remove(se.getSession());
        Counter.reduce();
    }
}

在线列表页面online.jsp的body:注:一定要在session中保存了用户信息才能显示,在登录后记录。

 
    
        
    
    <%
        List ls = Counter.getSessList();
        int num = 0;
        for (int i = 0; i < ls.size(); i++) {
            HttpSession sess = (HttpSession) ls.get(i);
            if (null != sess) {
                try {
                    if (null == sess.getAttribute("username")) {
                        continue;
                    } else {
                        num++;
                        String name = sess.getAttribute("username")
                                .toString();
                        String real = sess.getAttribute("realname")
                                .toString();
    %>
    
        
        
    

    <%
        }
                } catch (Exception e) {
                } finally {
                    continue;
                }
            }
        }
    %>
    
        
    
在线人员
            style="border-bottom: #cccccc 1px solid">            src="../images/online.gif"><%=real%>            src="../images/sms_noread.gif">             href="sendMsg.jsp?name=<%=name%>&real=<%=java.net.URLEncoder.encode(real,"UTF-8")%>">发送短消息
当前在线人数:<%=num%>个

阅读(1886) | 评论(0) | 转发(0) |
0

上一篇:URL传递中文参数

下一篇:没有了

给主人留下些什么吧!~~