session統計在線人數
阿新 • • 發佈:2019-03-27
aced con c const rem count require 百度 pri jcp
用監聽器監聽訪問網站的事件,難以實現服務器端驗證遊覽器端是否關閉遊覽器,所以模擬session過期設置session的生命周期。
import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.*; public class ServletListener implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener {// Public constructor is required by servlet spec public ServletListener() { } // ------------------------------------------------------- // ServletContextListener implementation // ------------------------------------------------------- //session創建時人數自增 public void sessionCreated(HttpSessionEvent se) {/* Session is created. */ HttpSession session = se.getSession(); session.setMaxInactiveInterval(3*60); ServletContext servletContext = session.getServletContext(); int count = (int) servletContext.getAttribute("count"); servletContext.setAttribute("count",++count); System.out.println("調用了sessionCreate方法!!"); System.out.println("當前在線人數:"+count); } public void sessionDestroyed(HttpSessionEvent se) { /* Session is destroyed. */ ServletContext servletContext = se.getSession().getServletContext(); int count = (int) servletContext.getAttribute("count"); servletContext.setAttribute("count",--count); System.out.println("調用了sessionDestroy方法!!"); System.out.println("當前在線人數:"+count); } public void contextInitialized(ServletContextEvent sce) { /* This method is called when the servlet context is initialized(when the Web application is deployed). You can initialize servlet context related data here. */ ServletContext servletContext = sce.getServletContext(); servletContext.setAttribute("count",0); } public void contextDestroyed(ServletContextEvent sce) { /* This method is invoked when the Servlet Context (the Web application) is undeployed or Application Server shuts down. */ } // ------------------------------------------------------- // HttpSessionListener implementation // ------------------------------------------------------- // ------------------------------------------------------- // HttpSessionAttributeListener implementation // ------------------------------------------------------- public void attributeAdded(HttpSessionBindingEvent sbe) { /* This method is called when an attribute is added to a session. */ } public void attributeRemoved(HttpSessionBindingEvent sbe) { /* This method is called when an attribute is removed from a session. */ } public void attributeReplaced(HttpSessionBindingEvent sbe) { /* This method is invoked when an attibute is replaced in a session. */ } }
在web.xml中註冊監聽器
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <listener> <listener-class>ServletListener</listener-class> </listener> </web-app>
用不同的遊覽器模擬不同的用戶訪問網站
百度網盤鏈接:鏈接: https://pan.baidu.com/s/10ifAib4iOwb9T1lO-fhl0Q 提取碼: ijfa
session統計在線人數