Heim > Java > javaLernprogramm > Hauptteil

Wie implementiert Java Web Listener die Ereignisüberwachung und -verarbeitung?

WBOY
Freigeben: 2023-05-19 12:01:49
nach vorne
999 Leute haben es durchsucht

In der Java-Webentwicklung sind Listener und Schnittstellenrückrufe sehr wichtige Konzepte. Sie können zum Abhören verschiedener Ereignisse verwendet werden, um bei Auftreten der Ereignisse geeignete Maßnahmen zu ergreifen.

Listener

In einer Java-Webanwendung ist ein Listener eine Komponente, die zum Abhören von Ereignissen verwendet werden kann, die in der Webanwendung auftreten. Der Listener kann die folgenden Ereignisse anhören:

  • Erstellung und Zerstörung von ServletContext

  • Erstellung und Zerstörung von HttpSession #🎜 🎜#

  • Erstellung und Zerstörung von ServletRequest

Der Listener kann die entsprechenden Ereignisse abhören, indem er die folgende Schnittstelle implementiert: #🎜🎜 #

    ServletContextListener
  • #🎜🎜 #

    HttpSessionListener
  • #🎜 🎜##🎜🎜 # ServletRequestListener#🎜 🎜#

  • Der folgende Code zeigt beispielsweise, wie die Erstellungs- und Zerstörungsereignisse von ServletContext durch Implementierung der ServletContextListener-Schnittstelle überwacht werden:
  • public class MyServletContextListener implements ServletContextListener {
        public void contextInitialized(ServletContextEvent event) {
            // ServletContext创建时执行的代码
        }
        public void contextDestroyed(ServletContextEvent event) {
            // ServletContext销毁时执行的代码
        }
    }
    Nach dem Login kopieren

    Schnittstellenrückruf

  • Eine Rückruffunktion ist ein Programmiermuster, das es ermöglicht, eine Funktion als Parameter an eine andere Funktion zu übergeben und dann innerhalb dieser Funktion aufzurufen, um einen Rückruf durchzuführen. In Java können Rückrufe mithilfe von Schnittstellen implementiert werden.

Der folgende Code zeigt beispielsweise, wie Schnittstellenrückrufe zum Implementieren der Ereignisüberwachung verwendet werden:

public interface MyEventListener {
    void onEvent(Event event);
}
public class EventSource {
    private MyEventListener listener;
    public void setEventListener(MyEventListener listener) {
        this.listener = listener;
    }
    public void fireEvent(Event event) {
        if (listener != null) {
            listener.onEvent(event);
        }
    }
}
public class MyEventListenerImpl implements MyEventListener {
    public void onEvent(Event event) {
        // 处理事件的代码
    }
}
Nach dem Login kopieren

Im obigen Code stellt die EventSource-Klasse die Ereignisquelle dar, die sein kann wird über die Methode setEventListener( ) übergeben, um den Ereignis-Listener festzulegen. Die MyEventListener-Schnittstelle stellt einen Ereignis-Listener dar, der über eine onEvent()-Methode verfügt, die aufgerufen wird, wenn ein Ereignis auftritt. Die MyEventListenerImpl-Klasse implementiert die MyEventListener-Schnittstelle, die die Implementierung der onEvent()-Methode zur Verarbeitung von Ereignissen enthält.

Web-Listener

Ein spezieller Listenertyp, der zum Abhören von Ereignissen in Webanwendungen verwendet wird, wird als Web-Listener bezeichnet. Web-Listener können die folgenden Ereignisse anhören:

Erstellung und Zerstörung von ServletContext

    Erstellung und Zerstörung von HttpSession
  • Erstellung und Zerstörung von ServletRequest
  • Attributstatusänderungen in HttpSession
  • # 🎜🎜 #

    Der folgende Code zeigt beispielsweise, wie Änderungen im Attributstatus in HttpSession durch Implementierung der HttpSessionAttributeListener-Schnittstelle überwacht werden:
  • public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener {
        public void attributeAdded(HttpSessionBindingEvent event) {
            // HttpSession中添加属性时执行的代码
        }
        public void attributeRemoved(HttpSessionBindingEvent event) {
            // HttpSession中删除属性时执行的代码
        }
        public void attributeReplaced(HttpSessionBindingEvent event) {
            // HttpSession中替换属性时执行的代码
        }
    }
    Nach dem Login kopieren
  • Auf die Erstellung und Zerstörung von drei Bereichen achten# 🎜🎜 #

    In Java-Webanwendungen gibt es drei Bereiche: ServletContext, HttpSession und ServletRequest. Sie können diese Bereichserstellungs- und -zerstörungsereignisse abhören, indem Sie entsprechende Listener schreiben.

  • Der folgende Code zeigt beispielsweise, wie die Erstellungs- und Zerstörungsereignisse dieser drei Bereiche durch Implementierung der Schnittstellen ServletContextListener, HttpSessionListener und ServletRequestListener überwacht werden:
public class MyServletContextListener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        // ServletContext创建时执行的代码
    }
    public void contextDestroyed(ServletContextEvent event) {
        // ServletContext销毁时执行的代码
    }
}
public class MyHttpSessionListener implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent event) {
        // HttpSession创建时执行的代码
    }
    public void sessionDestroyed(HttpSessionEvent event) {
        // HttpSession销毁时执行的代码
    }
}
public class MyServletRequestListener implements ServletRequestListener {
    public void requestInitialized(ServletRequestEvent event) {
        // ServletRequest创建时执行的代码
    }
    public void requestDestroyed(ServletRequestEvent event) {
        // ServletRequest销毁时执行的代码
    }
}
Nach dem Login kopieren

Auf drei Rollen hören Änderung des Domänenattributstatus

Zusätzlich zur Überwachung der Erstellungs- und Zerstörungsereignisse der drei Bereiche können Sie auch Änderungen in ihrem Attributstatus überwachen. Sie können diese Ereignisse abhören, indem Sie den entsprechenden Listener implementieren.

Der folgende Code zeigt beispielsweise, wie Änderungen im Attributstatus dieser drei Bereiche durch Implementierung der Schnittstellen ServletContextAttributeListener, HttpSessionAttributeListener und ServletRequestAttributeListener überwacht werden:

public class MyServletContextAttributeListener implements ServletContextAttributeListener {
    public void attributeAdded(ServletContextAttributeEvent event) {
        // ServletContext中添加属性时执行的代码
    }
    public void attributeRemoved(ServletContextAttributeEvent event) {
        // ServletContext中删除属性时执行的代码
    }
    public void attributeReplaced(ServletContextAttributeEvent event) {
        // ServletContext中替换属性时执行的代码
    }
}
public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener {
    public void attributeAdded(HttpSessionBindingEvent event) {
        // HttpSession中添加属性时执行的代码
    }
    public void attributeRemoved(HttpSessionBindingEvent event) {
        // HttpSession中删除属性时执行的代码
    }
    public void attributeReplaced(HttpSessionBindingEvent event) {
        // HttpSession中替换属性时执行的代码
    }
}
public class MyServletRequestAttributeListener implements ServletRequestAttributeListener {
    public void attributeAdded(ServletRequestAttributeEvent event) {
        // ServletRequest中添加属性时执行的代码
    }
    public void attributeRemoved(ServletRequestAttributeEvent event) {
        // ServletRequest中删除属性时执行的代码
    }
    public void attributeReplaced(ServletRequestAttributeEvent event) {
        // ServletRequest中替换属性时执行的代码
    }
}
Nach dem Login kopieren

Hören Sie sich den Wert an gespeichert in HttpSession Die Statusänderung

Zusätzlich zur Überwachung der Änderungsereignisse des Attributstatus in der HttpSession können Sie auch die Statusänderungsereignisse der in der HttpSession gespeicherten Werte überwachen. Um diese Ereignisse abzuhören, können Sie die HttpSessionBindingListener-Schnittstelle implementieren.

Der folgende Code zeigt beispielsweise, wie die Zustandsänderungsereignisse des in HttpSession gespeicherten Werts durch Implementierung der HttpSessionBindingListener-Schnittstelle überwacht werden:

public class MySessionBindingListener implements HttpSessionBindingListener {
    public void valueBound(HttpSessionBindingEvent event) {
        // HttpSession中存值时执行的代码
    }
    public void valueUnbound(HttpSessionBindingEvent event) {
        // HttpSession中删除值时执行的代码
    }
}
Nach dem Login kopieren

Listener-Anwendungsszenarien

#🎜 🎜#Listener verfügt über ein breites Spektrum an Anwendungsszenarien. Mit Listener können beispielsweise die folgenden Funktionen implementiert werden:

Laden Sie die Konfigurationsdatei, wenn der ServletContext initialisiert wird

In Aufzeichnen der Informationen des angemeldeten Benutzers, wenn HttpSession erstellt wird

  • Aufzeichnen der angeforderten IP-Adresse, wenn ServletRequest erstellt wird

    # 🎜🎜#
  • in Führen Sie beim Erstellen und Zerstören von Bereichen entsprechende Aufräumarbeiten durch
  • Bei der Verwendung von Listener müssen Sie Folgendes beachten:
  • # 🎜🎜#Die Listener-Implementierungsklasse muss die entsprechende Schnittstelle implementieren.
  • Listener-Implementierungsklasse muss in der web.xml-Datei konfiguriert werden.

Die Implementierungsklasse von Listener muss sich im selben ClassLoader wie die Anwendung befinden.

Das obige ist der detaillierte Inhalt vonWie implementiert Java Web Listener die Ereignisüberwachung und -verarbeitung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!