JavaWeb中的application統計線上人數案例
阿新 • • 發佈:2018-12-21
import java.util.HashSet; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class MySessionListener implements HttpSessionListener { public void 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數,即為“線上人數” } public void 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()); %> .......