Heim  >  Artikel  >  Java  >  Was ist der Unterschied zwischen Filter und Interceptor im Frühling?

Was ist der Unterschied zwischen Filter und Interceptor im Frühling?

不言
不言nach vorne
2019-04-03 16:50:2711225Durchsuche

In diesem Artikel erfahren Sie, was der Unterschied zwischen Filter und Interceptor im Frühling ist. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

Was ist der Unterschied zwischen Filter und Interceptor im Frühling?

Interceptor

Hauptfunktion: Benutzeranfragen abfangen und verarbeiten, z. B. den Anmeldestatus des Benutzers ermitteln und die Berechtigung überprüfen, solange Wie es bei Controller-Anfragen der Fall ist, werden sie über HandlerInterceptor verarbeitet.

Interceptor hat zwei Situationen: Es implementiert die HandlerInterceptor-Schnittstelle von Spring und registriert sie in der Abfangwarteschlange von mvc. Die Methode preHandle() wird ausgeführt. Abfangen (Schritt 3 im obigen Bild), postHandle()-Methode wird aufgerufen, bevor die Ansicht gerendert wird (Schritt 5 im obigen Bild), afterCompletion()Die Methode wird ausgeführt, bevor die entsprechende Methode zurückgegeben wird. Die andere besteht darin, die Methode abzufangen, was die Verwendung der @Aspect-Annotation zum Abfangen vor und nach jedem Aufruf der angegebenen Methode erfordert.

Filter

Hauptfunktionen: Filtern der Zeichenkodierung und Treffen einiger Geschäftslogik-Urteile. Wird hauptsächlich zur Vorverarbeitung von Benutzeranfragen verwendet und kann auch logische Urteile fällen.

Der Filter wird gefiltert, bevor die Anforderung in den Servlet-Container gelangt, um die service()-Methode auszuführen (Schritt 1 im Bild oben). Er basiert nicht auf dem SpringMVC-Framework wie Intreceptor. muss sich aber nur auf das Servlet verlassen. Der Filterstart wird mit dem Start der WEB-Anwendung gestartet. Er muss nur einmal initialisiert werden und kann in Zukunft abgefangen werden.

Filter hat die folgenden Typen:

Benutzerautorisierungsfilter: prüft Benutzeranfragen und filtert illegale Benutzeranfragen entsprechend der Anfrage

Protokollfilter: zeichnet bestimmte spezielle Benutzeranfragen auf;

Dekodierungsfilter: Dekodierungsanfragen für nicht standardmäßige Kodierung.

Der Unterschied zwischen Filter und Interceptor

1. Filter basiert auf Funktionsrückruf (doFilter()-Methode), während Interceptor auf Java-Reflexion basiert (AOP-Idee) .

2. Filter hängt vom Servlet-Container ab, während Interceptor nicht vom Servlet-Container abhängt.

3. Filter funktioniert bei fast allen Anfragen, während Interceptor nur bei Aktionsanfragen arbeiten kann.

4. Interceptor kann auf den Kontext von Action und den Objekten im Wertestapel zugreifen, Filter jedoch nicht.

5. Im Lebenszyklus einer Aktion kann Interceptor mehrmals aufgerufen werden, während Filter nur einmal aufgerufen werden kann, wenn der Container initialisiert wird.

6. Der Filter kann beim Filtern nur auf Anfrage und Antwort arbeiten, während der Interceptor auf Anfrage, Antwort, Handler, ModelAndView und Ausnahme arbeiten kann.

[Verwandte Empfehlungen: Java-Video-Tutorial]

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Filter und Interceptor im Frühling?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen