Ein Listener ist ein gewöhnliches Java-Programm, das eine bestimmte Schnittstelle implementiert. Dieses Programm wird speziell zum Überwachen von Methodenaufrufen oder Eigenschaftsänderungen eines anderen Java-Objekts verwendet Überwachtes Objekt, eine Methode des Listeners wird sofort ausgeführt.
Wird zum Abhören von WEB-, Anwendungsstart- und Zerstörungsereignissen verwendet
public void contextInitialized(ServletContextEvent sce): Wird beim Initialisieren der Webanwendung ausgeführt
public void contextDestroyed( ServletContextEvent sce) {}: Wird ausgeführt, wenn die Webanwendung zerstört wird
public void sessionDestroyed(HttpSessionEvent se) {}: Wird ausgeführt, wenn die Sitzung zerstört wird(3)ServletRequestListenerWird zur Überwachung der Erstellung und Zerstörung von Requset-Objekten verwendetpublic void requsetCreated(HttpSessionEvent se) {}: Wird ausgeführt, wenn die requset wird erstellt public void requestDestroyed(HttpSessionEvent se) {}: Wird ausgeführt, wenn requset zerstört wird(4)ServletContextAttributeListener wird verwendet, um Änderungen in WEB-Bereichsattributen zu überwachen, einschließlich: Hinzufügen von Attributen, Löschen von Attributen, Ändern von Attributen attributeAdded(ServletContextEvent sce): Wird ausgeführt, wenn Attribute zu ServletContext hinzugefügt werden. attributeAdded(ServletContextRemoved sce): Wird ausgeführt, wenn Attribute in ServletContext gelöscht werden. AttributeReplaced(ServletContextRemoved sce): Wird ausgeführt, wenn Attribute in ServletContext geändert werden AttributeListener wird verwendet um die Sitzungsfunktion zu überwachen. Änderungen an Domänenattributen, einschließlich: Hinzufügen von Attributen, Löschen von Attributen, Ändern von Attributen (6) ServletRequestAttributeListener wird verwendet, um Änderungen an Requset-Bereichsattributen zu überwachen, einschließlich: Hinzufügen von Attributen, Löschen von Attributen, Ändern von Attributen (7)HttpSessionActivationListenerWird verwendet, um die Serialisierung und Deserialisierung eines Objekts in der Sitzung zu überwachen3. Der Listener implementiert die Funktion zum Zählen von Personen (1) Erstellen Sie zuerst das Listener-Paket listener und dann eine neue OnlineListener-Klasse
package listener; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import javax.servlet.http.HttpSessionBindingEvent; @WebListener() public class OnlineListener implements ServletContextListener,HttpSessionListener, HttpSessionAttributeListener { private static int count=0; public OnlineListener() {//构造函数 } // ServletContextListener的实现方法,在初始化web应用时执行,你可以在此处初始化server上下文相关数据 public void contextInitialized(ServletContextEvent sce) {//应用初始化完成 } // ServletContextListener的实现方法,在web应用关闭时执行 public void contextDestroyed(ServletContextEvent sce) { } // HttpSessionListener的实现方法,session被创建的时候执行 public void sessionCreated(HttpSessionEvent se) {//创建 count++; ServletContext app = se.getSession().getServletContext(); app.setAttribute("count",count); } // HttpSessionListener的实现方法,session被销毁的时候执行 public void sessionDestroyed(HttpSessionEvent se) { count--; ServletContext app = se.getSession().getServletContext(); app.setAttribute("count",count); } }
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; @WebServlet(name = "OnlineServlet",urlPatterns = "/online") public class OnlineServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String op=request.getParameter("op"); String result=""; switch (op){ case "login": //request.getSession()触发监听器的sessionCreated ServletContext app=request.getSession().getServletContext(); int count= (int) app.getAttribute("count"); result=String.format("当前%d人在线",count); break; case "logout": //销毁session,触发监听器的sessionDestroy request.getSession().invalidate();//销毁session result="您已经退出了!"; } response.setContentType("text/html;charset=utf-8"); PrintWriter out=response.getWriter(); out.write(result); out.close(); } }
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Funktion zum Zählen von Online-Personen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!