1. 程式人生 > >Java 實現網站當前線上使用者統計

Java 實現網站當前線上使用者統計

     通過SessionListenr可以監聽session的建立和銷燬,所以首先要寫一個類MySessionListener,實現javax.servlet.http.HttpSessionListener介面及其sessionCreated()sessionDestroyed()方法:

import java.util.HashSet;import javax.servlet.ServletContext;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionEvent;import

 javax.servlet.http.HttpSessionListener;publicclass MySessionListener implements HttpSessionListener {publicvoid sessionCreated(HttpSessionEvent event) {              HttpSession session = event.getSession();              ServletContext application = session.getServletContext();// application範圍由一個HashSet
集儲存所有的session
              HashSet sessions = (HashSet) application.getAttribute("sessions");if (sessions == null) {                     sessions = new HashSet();                     application.setAttribute("sessions", sessions);              }// 新建立的session均新增到HashSet集中              sessions.add(session);
// 可以在別處從application範圍中取出sessions集合

// 然後使用sessions.size()獲取當前活動的session數,即為線上人數       }publicvoid sessionDestroyed(HttpSessionEvent event) {              HttpSession session = event.getSession();              ServletContext application = session.getServletContext();              HashSet sessions = (HashSet) application.getAttribute("sessions");// 銷燬的session均從HashSet集中移除              sessions.remove(session);       }}

然後再web.xml中分別配置SessionListener和session超時時間(10分鐘):

<listener><listener-class>全路徑MySessionListener</listener-class></listener>

<session-config><session-timeout>10</session-timeout></session-config>

最後在Jsp頁面程式碼使用以下程式碼就可以實現當前線上人數統計輸出:

.......

當前線上:

<% 

HashSet sessions=(HashSet)application.getAttribute("sessions");

out.print(sessions.size());

%>

.......