2014-04-30 12 views
5

ich auf einer Frühlings-Anwendung arbeite, in dem ich einige Sicherheitsüberprüfungen wie MD5 Überprüfung von Dateien tun will, DB Prüfung, überprüfen Anwendungsversion usw.Abfangjäger oder Filter

Ich habe über Abfangjäger lesen und Filter, aber immer noch ein etwas verwirren, über welches man gut ist.

Was auch immer Dokumente, die ich gelesen habe, ist festgelegt, dass Filter und Interceptors beide für Protokollierung und Auditing verwendet werden können, was für dieses Szenario gut ist. Auch alle diese Sicherheitsüberprüfungen (MD5-Prüfung von Dateien, DB-Prüfung, Prüfung der Anwendungsversion) können konfiguriert werden, dh DB-Prüfung ist erlaubt, Prüfung der Anwendungsversion ist ebenfalls zulässig.

+0

Duplizieren von [Frühling HandlerInterceptor vs Servlets Filters] (http://stackoverflow.com/questions/8000844/spring-handlerinterceptor-vs-servlet -Filter) – anre

Antwort

9

Meiner Meinung nach einer der größten Unterschied zwischen Filter und Interceptor ist:

Filter funktioniert nur in J2EE Web-Anwendungen, Sie können nicht außerhalb der Anwendungsserver verwenden, können Abfangjäger in verschiedenen Komponenten arbeiten und nicht hängt davon ab, die Web-Schicht hat im Zusammenfassenden Interzeptor ein weites Feld als Filter. Wenn Sie planen, eine Komponente außerhalb des Containers zu verschieben, sollten Sie Interzeptoren verwenden.

Filter arbeiten mehr in der Anfrage/Antwort-Domäne, in der anderen Hand Interceptor handeln mehr in der Methode Ausführungsdomäne.

Wenn Sie etwas tun müssen, das die Anfrage oder Antwort auf Ihre Anwendung wie Protokollierung, Sicherheit, Audit beeinflussen könnte, oder Sie die Daten beeinflussen, ist Ihre Option Filter, vergessen Sie nicht die Plug-Fähigkeit dass diese bietet.

Interceptor werden in Verbindung mit Java EE-Klassen verwaltet Entwicklern ermöglichen, Interceptor Methoden auf einem zugehörigen Ziel Klasse in Verbindung mit Verfahren Anrufungen oder Lifecycle-Ereignissen

+0

Vielen Dank für deine schnelle Antwort, ich kann mich irren, aber laut deinem Satz funktionieren Filter im Web Layer und Interceptors können wo auch immer verwendet werden, oder? – Amogh

+0

Filter ist eine Web-Komponente, andererseits können Interzeptoren innerhalb einer Zielklasse als Interzeptor-Methode oder in einer zugeordneten Klasse namens Interceptor-Klasse definiert werden, und ja kann überall verwendet werden, nur abhängig vom Framework, wenn Sie einige verwenden ein, javax.interceptor weit – Koitoer

+0

Ok, ich habe es jetzt.Ich werde mit Abfangjägern gehen, aber ich plane nicht, irgendeine Komponente außerhalb des Containers herauszubewegen, weil mir noch nicht klar ist, was ich aus dem Container herausnehmen soll. Ich werde Interceptors verwenden, denn wenn eine Sicherheitsüberprüfung fehlschlägt, kann ich ModelAndView ändern, was mit Interceptors geschehen kann. ist es richtig? – Amogh

3

Ich bin spät Antwort aufrufen Obwohl ich meine Ansichten teilen möchte.

Ein Filter wird nur in der Webschicht verwendet, wie er in web.xml definiert ist. Wir können es nicht aus dem Webkontext heraus verwenden. Spring Interceptors können überall verwendet werden, da sie im Anwendungskontext definiert sind.

In Anbetracht des oben genannten Unterschieds sollten wir für die Login-Authentifizierung und die Überwachung eingehender Anfragen von Webseiten einen Servlet-Filter verwenden. Zur Implementierung Ihrer Business-Layer-Protokollierung und -Überwachung und vieler weiterer Funktionen sollten wir einen Interceptor verwenden.

Zusätzlich, wenn Sie die Spring MVC verwenden. dann möchten Sie die gesamte Logik des Filterns oder Abfangens in einem Framework beibehalten, als einige Logik im Servlet-Filter und andere im Frühjahr zu schreiben.

Frühling geben einen zusätzlichen Kontrollpunkt afterCompletion zusätzlich zu vor und nach Methoden

Verwandte Themen