javaweb統計在線人數,代碼如下,不知道哪裡出了問題,有時候顯示在線人數為-1
/* Session創建事件 */
public void sessionCreated(HttpSessionEvent event) {
// TODO Auto-generated method stub
ServletContext ctx = event.getSession().getServletContext();
Integer numSessions = (Integer) ctx.getAttribute("numSessions");
if (numSessions == null) {
numSessions = new Integer(1);
} else {
int count = numSessions.intValue();
numSessions = new Integer(count + 1);
}
ctx.setAttribute("numSessions", numSessions);
}
/* Session失效事件 */
public void sessionDestroyed(HttpSessionEvent event) {
// TODO Auto-generated method stub
ServletContext ctx = event.getSession().getServletContext();
Integer numSessions = (Integer) ctx.getAttribute("numSessions");
if (numSessions == null) {
numSessions = new Integer(0);
} else {
int count = numSessions.intValue();
numSessions = new Integer(count - 1);
}
ctx.setAttribute("numSessions", numSessions);
}
jsp頁面:
當前在線人數有<%=application.getAttribute("numSessions") %> 人
求指教,謝謝!
在Session失效事件那裡,判斷numSessions是否為null有點問題。比如說我現在一個人登錄,然後你判斷numSessions是否為空,是,所以讓它為1,然後我再退出操作,你又判斷numSessions是否為空,否,所以你直接減1,然後numSessions就是為0了,那我要是再退出一下呢,numSessions是等於0而不是null,所以你又減1了,就變成-1了。
這個程序的問題,應該在於我沒有登錄都可以進行退出操作吧