當(dāng)用戶(hù)登錄時(shí)維護(hù)一個(gè)會(huì)話對(duì)象:UserInfo類(lèi)的實(shí)例,同時(shí)UserInfo類(lèi)實(shí)現(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?{
//?用戶(hù)信息
int?userId;
String?userName;
......
/**
?*?當(dāng)UserInfo類(lèi)被綁定到session中時(shí)觸發(fā)這個(gè)事件
?*?具體信息請(qǐng)參見(jiàn)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)?{?//?如果是服務(wù)器啟動(dòng)后的第一個(gè)登錄用戶(hù),新建一個(gè)容器
map?=?new?HashMap?();
ctx.setAttribute?("users",?map);
}
map.put?(userName,?this);?//?把自己加入容器中
}
/**
?*?當(dāng)UserInfo類(lèi)從session中刪除時(shí)觸發(fā)這個(gè)事件
?*?具體信息請(qǐng)參見(jiàn)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中就可以這樣顯示在線用戶(hù)數(shù)了:
<%
int?userCount?=?0;
JAVA.util.Map?map?=?(java.util.Map)application.getAttribute?("users");
if?(map?==?0)?userCount?=?0;
else?userCount?=?map.size?();
%>;
import?JAVA.util.Map;
import?JAVA.util.HashMap;
import?javax.servlet.http.*;
import?javax.servlet.ServletContext;
public?class?UserInfo?implements?HttpSessionBindingListener?{
//?用戶(hù)信息
int?userId;
String?userName;
......
/**
?*?當(dāng)UserInfo類(lèi)被綁定到session中時(shí)觸發(fā)這個(gè)事件
?*?具體信息請(qǐng)參見(jiàn)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)?{?//?如果是服務(wù)器啟動(dòng)后的第一個(gè)登錄用戶(hù),新建一個(gè)容器
map?=?new?HashMap?();
ctx.setAttribute?("users",?map);
}
map.put?(userName,?this);?//?把自己加入容器中
}
/**
?*?當(dāng)UserInfo類(lèi)從session中刪除時(shí)觸發(fā)這個(gè)事件
?*?具體信息請(qǐng)參見(jiàn)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中就可以這樣顯示在線用戶(hù)數(shù)了:
<%
int?userCount?=?0;
JAVA.util.Map?map?=?(java.util.Map)application.getAttribute?("users");
if?(map?==?0)?userCount?=?0;
else?userCount?=?map.size?();
%>;