Posted on 2007-01-26 13:42
東舟 閱讀(213)
評論(0) 編輯 收藏 所屬分類:
JAVA
當用戶登錄時維護一個會話對象:UserInfo類的實例,同時UserInfo類實現(xiàn)javax.servlet.http.HttpSessionBindingListener接口:
import?JAVA.util.Map;
import?JAVA.util.HashMap;
import?javax.servlet.http.*;
import?javax.servlet.ServletContext;
public?class?UserInfo?implements?HttpSessionBindingListener?{
//?用戶信息
int?userId;
String?userName;
......
/**
?*?當UserInfo類被綁定到session中時觸發(fā)這個事件
?*?具體信息請參見Servlet/JSPs的規(guī)范
?*/
public?void?valueBound(HttpSessionBindingEvent?event)?{
HttpSession?session?=?event.getSession?();
ServletContext?ctx?=?session.getServletContext?();
Map?map?=?(Map)ctx.getAttribute?("users");
if?(map?==?null)?{?//?如果是服務器啟動后的第一個登錄用戶,新建一個容器
map?=?new?HashMap?();
ctx.setAttribute?("users",?map);
}
map.put?(userName,?this);?//?把自己加入容器中
}
/**
?*?當UserInfo類從session中刪除時觸發(fā)這個事件
?*?具體信息請參見Servlet/JSPs的規(guī)范
?*/
public?void?valueUnbound(HttpSessionBindingEvent?event)?{
HttpSession?session?=?event.getSession?();
ServletContext?ctx?=?session.getServletContext?();
Map?map?=?(Map)ctx.getAttribute?("users");
map.remove?(this.userName);?//?把自己從容器中刪除
}
......
}
以后在JSP中就可以這樣顯示在線用戶數(shù)了:
<%
int?userCount?=?0;
JAVA.util.Map?map?=?(java.util.Map)application.getAttribute?("users");
if?(map?==?0)?userCount?=?0;
else?userCount?=?map.size?();
%>;