session实现在线统计(列表)
时间:2008-12-04 来源:zjc1987
使用session实现在线统计,可以实现HttpSessionListener接口来监听session的创建与销毁。注:当关闭浏览器窗口的时候,不能立即捕获session的销毁,只有等服务器端session失效(由session timeout决定)才捕获。
注:由于系统中使用ajax在后台刷新所以保证了session永远不会失效,除非关闭浏览器或退出系统。
注:由于系统中使用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接口:
在线列表页面online.jsp的body:注:一定要在session中保存了用户信息才能显示,在登录后记录。
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> |
相关阅读 更多 +