文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>session实现在线统计(列表)

session实现在线统计(列表)

时间:2008-12-04  来源:zjc1987

   使用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中保存了用户信息才能显示,在登录后记录。

 <table width="100%" border="0" cellpadding="5" cellspacing="0">
    <tr>
        <td colspan="2" align="center" id="tablelist_Field">在线人员</td>
    </tr>
    <%
        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();
    %>
    <tr>
        <td align="center" valign="middle"
            style="border-bottom: #cccccc 1px solid"><img
            src="../images/online.gif"><%=real%></td>
        <td style="border-bottom: #cccccc 1px solid"><img
            src="../images/sms_noread.gif"> <a target="main"
            href="sendMsg.jsp?name=<%=name%>&real=<%=java.net.URLEncoder.encode(real,"UTF-8")%>">发送短消息</a></td>
    </tr>

    <%
        }
                } catch (Exception e) {
                } finally {
                    continue;
                }
            }
        }
    %>
    <tr>
        <td colspan="2" align="center">当前在线人数:<%=num%>个</td>
    </tr>
</table>
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载