Unterschiede und Verbindungen zwischen Servlets, Filtern, Zuhörern, Interceptors
1. Konzept
1.Servlet: Servlet ist eine Java-Anwendung, die serverseitig mit plattform- und protokollunabhängige Funktionen ausgeführt wird, und kann dynamisch Webseiten generieren, die in der mittleren Ebene zwischen Client-Anforderungen und Serverantworten funktionieren.
2. Filter: Filter ist ein wiederverwendbares Code -Snippet, mit dem HTTP -Anforderungen, Antworten und Header -Informationen konvertiert werden können. Filter ist nicht wie ein Servlet. Es kann keine Anfrage oder Antwort generieren. Es ändert nur eine Anfrage an eine bestimmte Ressource oder ändert eine Antwort aus einer bestimmten Ressource.
3. Hörer: Hörer, im wahrsten Sinne des Wortes ist zu sehen, dass der Hörer hauptsächlich zum Hören verwendet wird. Über den Hörer können Sie eine Ausführungsaktion auf einem Webserver anhören und entsprechende Antworten entsprechend ihren Anforderungen vornehmen.
In einfachen Worten ist es eine funktionale Komponente, die den Code automatisch ausführt, wenn die drei Objekte der Anwendung, Sitzung und Anforderung erstellt werden oder wenn die Attribute für Änderungen und Entfernungen hinzugefügt werden.
4.Interceptor: Es wird in der tangentialen Ausrichtung programmiert, bei der es darum geht, eine Methode vor Ihrem Dienst oder einer Methode aufzurufen oder eine Methode nach der Methode aufzurufen.
Zum Beispiel ist dynamischer Proxy eine einfache Implementierung eines Interceptors. Sie können eine Zeichenfolge ausdrucken, bevor Sie die Methode aufrufen (oder andere Geschäftslogikoperationen durchführen), können Sie auch eine Zeichenfolge ausdrucken, nachdem Sie die Methode aufgerufen haben, oder sogar Geschäftslogikvorgänge durchführen, wenn Sie eine Ausnahme ausgeben.
5. Servlet, Filter, Listener werden in web.xml konfiguriert, Interceptor ist nicht in web.xml konfiguriert. Struts Interceptor wird in Struts.xml konfiguriert. Der Interceptor für die Feder ist in feder.xml konfiguriert.
2. Ladereihenfolge
Die Ladereihenfolge von web.xml lautet: Context -Param -> Listener -> Filter -> Servlet
3. Verantwortlichkeiten
1. Servlet:
(1) Erstellen und senden Sie eine vollständige HTML -Seite mit dynamischem Inhalt basierend auf der Art der Client -Anfrage
(2) Erstellen Sie einen Teil der HTML -Seite (HTML -Fragment), das in eine vorhandene HTML -Seite eingebettet werden kann
(3) Lesen Sie versteckte Daten vom Client gesendet
(4) Lesen Sie die vom Client gesendeten Anzeigedaten
(5) mit anderen Serverressourcen kommunizieren (einschließlich Datenbank- und Java -Anwendungen)
(6) Senden Sie versteckte Daten über Statuscode und Antwortheader an den Client.
2. Filter:
(1) Der Filter kann Benutzeranforderungen vor dem Erreichen einer Anforderung das Servlet vorbereiten, oder kann auch HTTP -Antworten verarbeiten, wenn Sie das Servlet verlassen
(2) Führen Sie vor dem Ausführen des Servlets zunächst das Filterprogramm aus und führen Sie einige Vorverarbeitungsarbeiten dafür aus.
(3) Ändern Sie die Anfrage und Antwort entsprechend dem Programmbedarf
(4) Abfangen die Ausführung des Servlets, nachdem das Servlet aufgerufen wurde.
3.Listener:
8 Listener -Schnittstellen sind in der Spezifikation von Servlet2.4 enthalten, die wie folgt in drei Kategorien unterteilt werden kann:
(1) Listne R -Schnittstelle im Zusammenhang mit ServletContext. Einschließlich: ServletContextListener, ServletContextAttributelistener
(2) Lister -Schnittstelle im Zusammenhang mit HTTPSession. Einschließlich: httpSessionListner, httpSessionattributelistener, httpSessionBindingListener, httpSessionActivationListenerererer
(3) Hörer -Schnittstellen im Zusammenhang mit ServletRequest, einschließlich: ServletRequestListner, ServletRequestAttributelistener
4. Unterschied
1.Servlet: Der Servlet -Prozess ist kurz. Nachdem die URL übertragen wurde, wird sie verarbeitet und dann zurückgegeben oder zu einer von Ihnen angegebenen Seite zurückgegeben. Es wird hauptsächlich verwendet, um vor der Geschäftsverarbeitung zu kontrollieren.
2. Filter: Der Vorgang wird überfasst. Nachdem die URL übertragen wurde, kann nach Überprüfung der ursprüngliche Vorgang nach unten gehalten und durch den nächsten Filter, Servlet usw. empfangen werden, und nachdem das Servlet verarbeitet wurde, wird sie nicht weiter nach unten weitergegeben.
Die Filterfunktion kann verwendet werden, um den Prozess auf die ursprüngliche Weise zu halten oder um den Prozess zu dominieren, während die Servlet -Funktion hauptsächlich zur Dominieren des Prozesses verwendet wird. Der Filter kann als Ergänzung zum Servlet (weiche Wischtuch) angesehen werden.
Der Filter kann als "Variante" von Servlet angesehen werden. Es wird hauptsächlich zur Vorbereitung von Benutzeranfragen verwendet und kann auch HttpServletResponse nach dem Prozess nach dem Prozess verarbeiten. Es ist eine typische Verarbeitungskette.
Der Unterschied zwischen IT und Servlet besteht darin, dass es keine Antwort direkt auf den Benutzer generieren kann.
Der vollständige Vorgang lautet: Filtervorverhandlungen Benutzeranfragen filtern, erteilt dann die Anforderungen für die Verarbeitung an das Servlet und generiert eine Antwort und filtert schließlich die Nachverarbeitung der Serverantwort.
3.. Übereinstimmende Regeln
Wenn eine Anfrage an den Servlet -Container gesendet wird, subtrahiert der Container zuerst die angeforderte URL an den aktuellen Anwendungskontextpfad als Servlet -Mapping -URL. Zum Beispiel besuche ich http: //localhost/test/aaa.html (mein Anwendungskontext ist Test).
Der Container entfernen http: // localhost/tes und verwendet den verbleibenden Teil /aaa.html-Teil, um dem Servlet-Mapping zu entsprechen.
Hinweis: Es gibt bestimmte Regeln für diesen Mapping -Matching -Prozess, und jede Übereinstimmung stimmt schließlich nur mit einem Servlet überein. (Dies unterscheidet sich vom Filter)
Servlet Matching -Regeln: Wenn ein Servlet erfolgreich übereinstimmt, wird es nicht weiter übereinstimmen
Präzise Pfadübereinstimmung:
Beispiel: Zum Beispiel ist das URL-Muster von Servleta /Test, und das URL-Muster von ServletB ist /*. Zu diesem Zeitpunkt ist, wenn die URL I -Zugriff http: // localhost/test ist,
Zu diesem Zeitpunkt führt der Container zunächst eine genaue Pfadanpassung durch und stellt fest, dass /Test genau von Servleta übereinstimmt. Rufen Sie also Servleta an und achten nicht auf andere Servlets.
Matching des längsten Weges:
Beispiel: Das URL-Muster von Servleta ist/test/*, und das URL-Muster von ServletB ist/test/a/*. Beim Zugriff auf http: // localhost/test/a,
Der Container wählt den Servlet mit dem am längsten übereinstimmenden Pfad aus, der hier das ServletB ist.
Erweiterungsanpassung: Wenn das letzte Segment der URL eine Erweiterung enthält, wählt der Container das entsprechende Servlet basierend auf der Erweiterung aus.
Beispiel: URL-Muster von Servleta: *.Action
4. Servlets und Filter richten sich alle auf URLs und so weiter, während die Zuhörer auf Objekte wie die Erstellung von Sitzungen und das Auftreten von Sitzungen abzielen.
Kann verwendet werden, um: Spring integriert Streben, injizieren Attribute in die Aktion von Struts, implementieren Webanwendungs -Timing -Aufgaben, Statistiken zur Anzahl der Online -Benutzer usw.
5. Interceptor Interceptor, ähnlich wie Filter, ist jedoch in Struts.xml konfiguriert, nicht in web.xml und nicht für URLs, sondern für Aktionen. Wenn die Seite eine Aktion einreicht,
Die Durchführung von Filtervorgängen entspricht dem von Struts1.x bereitgestellten Plug-in-Mechanismus. Es kann als ersterer angesehen werden, der von Struts1.x bereitgestellte Filter ist, und der Interceptor ist der von Struts2 bereitgestellte Filter.
Unterschiede vom Filter:
(1) Es ist nicht in web.xml konfiguriert, sondern in Struts.xml konfiguriert. Mit Aktion (2) kann die Aktion selbst angeben
6. Der Unterschied und die Verbindung zwischen Filtern und Interceptors in Struts2:
(1) Der Interceptor wird von Struts2 bereitgestellt, während Filter vom Servlet Standard bereitgestellt werden
(2) Der Interceptor fängt die Zielmethode der Zielaktion ab, während die Filter auf verschiedene Webressourcen abzielen
(3) Der Interceptor ist in Struts.xml konfiguriert, während der Filter in der Datei web.xml konfiguriert ist
(4) Interceptors werden mit einem Interceptor -Stapel miteinander organisiert, während Filter gemäß den Abfangressourcen miteinander verbunden sind. Die Reihenfolge der Ausführung wird durch ihre Position in der Konfigurationsdatei bestimmt.
(5) Interceptors basieren auf dem Java -Reflexionsmechanismus, während Filter auf Funktionsrückrufen basieren.
(6) Filter hängen von Servlet -Behältern ab, während Interceptors nicht von Servlet -Behältern abhängen.
(7) Interceptors können nur an Aktionsanfragen arbeiten, während Filter an fast allen Anfragen arbeiten können.
(8) Der Interceptor kann im Aktionskontext und im Wertstapel auf Objekte zugreifen, der Filter kann jedoch nicht.
(9) Während des Lebenszyklus des Wirks kann der Interceptor mehrmals aufgerufen werden, während der Filter nur einmal aufgerufen werden kann, wenn der Container initialisiert wird.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!