Filter ist ein wiederverwendbares Code -Snippet, mit dem HTTP -Anforderungen, Antworten und Headerinformationen 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.
Kürzlich habe ich bei der Verwendung von Skripten Cookies verwendet, um den Computer zu identifizieren, Filterung hinzugefügt und sorgfältig untersuchte Servlets und Filter. Der Hauptunterschied ist:
Der Lebenszyklus eines Filters durchläuft im Allgemeinen die folgenden drei Stufen:
Die Eigenschaften von Servlets sind:
Initialisierung
Die Init () -Methode wird aufgerufen, wenn der Container den Filter zum ersten Mal lädt. Diese Klasse enthält einen Verweis auf das Filterkonfigurationsobjekt in dieser Methode. Unsere Filter müssen dies eigentlich nicht tun, da keine Initialisierungsinformationen verwendet werden, und hier dient es nur zu Demonstrationszwecken.
Filter
Die meiste Zeit des Filters wird hier verbraucht. Die Dofilter -Methode wird vom Container aufgerufen, und Verweise auf die Objekte Servlet -Anforderung, Servlet -Antwort und Filterketten in der Anforderung/Antwortkette werden gleichzeitig übergeben. Der Filter hat dann die Möglichkeit, die Anforderung zu verarbeiten, die Verarbeitungsaufgabe an die nächste Ressource in der Kette zu übergeben (indem die Dofiltermethode auf der Referenz der Filterkette aufgerufen wird) und dann die Antwort verarbeiten, wenn die Verarbeitungssteuerung zum Filter zurückkehrt.
Zerstörung
Der Container ruft die Methode Destroy () unmittelbar vor der Müllsammlung auf, um alle erforderlichen Reinigungscode auszuführen.
In Bezug auf die Kette.Dofilter (Anfrage, Antwort) Seine Funktion besteht darin, die Anfrage an das nächste Objekt in der Filterkette weiterzuleiten. Der nächste hier bezieht sich auf den nächsten Filter, wenn es keinen Filter gibt, ist es die von Ihnen angeforderte Ressource. Im Allgemeinen sind Filter eine Kette, und es gibt nur wenige Konfigurationen in web.xml. Eins nach dem anderen verbunden
Anfrage -> filter1 -> filter2 -> filter3 -> .... -> Anforderungsressource.
Der Filter ist ein Kettenbetrieb. Bei der Bearbeitung eines einzelnen Filters müssen Sie endlich zum Servlet springen, um auf die Anfrage zu antworten.
Wenn Sie durch die Kette gehen, springt die Methode der Kette (Anfrage, Antwort) sofort zum abgefangenen Servlet und kehrt zum Filter zurück. Die Kette entspricht einer Tür, gehen Sie von dieser Tür und kehren Sie dann von dieser Tür zurück. Die Methode zum Aufrufen des Filters besteht darin, ihn in web.xml zu konfigurieren, und Sie müssen ein URL-Muster konfigurieren, das dem Servlet entspricht, den Sie abfangen müssen.
<!-Konfigurieren Sie einen Filter-> <Filter> <Filter-name> Suibianxie </filter-name> <Filter-Klasse> com.etoak.filter.Myencoding </filter-classe> <! </filter> <!-Die Reihenfolge des Abfangens hängt mit der Reihenfolge der Zuordnung zusammen-> <Filter-Mapping> <Filtername> Suibianxie </Filter-Name> <! <!-Konfigurieren Sie den zweiten Filter-> <Filter> <filter-name> Suibianxie2 </Filter-Name> <Filter-Klasse> com.etoak.filter.naming </filterklasse> </filter> <Filtermapping> <Filter-Name> Suibianxie2 </filter-name> <url-puffer>/servlet-test </filter-name> <url-puffer </filtermapping> <servlet> <Servlet-name> test </servlet-name> <Servlet-Class> com.etoak.servlet.test </Servlet-Class> </servlet> <Servlet-Mapping> <Servlet-name> Test </Servlet-NAME> <URL-PATTER>/SERST </test </url-patter>
Das obige ist der Unterschied und die Verbindung zwischen Servlets und Filtern, die Ihnen vom Herausgeber vorgestellt wurden. Ich hoffe, es wird für alle hilfreich sein!