Aus HandlerIntercepterdem Javadoc :
HandlerInterceptorähnelt im Grunde einem Servlet Filter, ermöglicht jedoch im Gegensatz zu letzterem nur eine benutzerdefinierte Vorverarbeitung mit der Option, die Ausführung des Handlers selbst und eine benutzerdefinierte Nachbearbeitung zu verbieten. Filter sind leistungsfähiger, z. B. ermöglichen sie den Austausch der Anforderungs- und Antwortobjekte, die über die Kette weitergegeben werden. Beachten Sie, dass ein Filter in web.xmla
HandlerInterceptorim Anwendungskontext konfiguriert wird .
Als grundlegende Richtlinie sind feinkörnige Handler-bezogene Vorverarbeitungsaufgaben Kandidaten für HandlerInterceptorImplementierungen, insbesondere ausgerechnete allgemeine Handler-Code- und Berechtigungsprüfungen. Auf der anderen Seite Filtereignet sich a gut für die Bearbeitung von Anforderungsinhalten und zum Anzeigen von Inhalten, wie z. B. mehrteilige Formulare und GZIP-Komprimierung. Dies zeigt normalerweise, wann der Filter bestimmten Inhaltstypen (z. B. Bildern) oder allen Anforderungen zugeordnet werden muss.
Nachdem dies gesagt wurde:
Wo ist also der Unterschied zwischen Interceptor#postHandle()und
Filter#doFilter()?
postHandlewird nach dem Aufruf der Handler-Methode, jedoch vor dem Rendern der Ansicht aufgerufen. Sie können der Ansicht also weitere Modellobjekte hinzufügen, diese jedoch nicht ändern, HttpServletResponseda sie bereits festgeschrieben sind.
doFilterist viel vielseitiger als die postHandle. Sie können die Anforderung oder Antwort ändern und an die Kette übergeben oder sogar die Anforderungsverarbeitung blockieren.
Außerdem haben Sie in preHandleund postHandleMethoden Zugriff auf die HandlerMethod, die die Anforderung verarbeitet hat. Sie können also eine Vor- / Nachbearbeitungslogik basierend auf dem Handler selbst hinzufügen. Sie können beispielsweise eine Logik für Handlermethoden hinzufügen, die einige Anmerkungen enthalten.
Was ist die beste Vorgehensweise in welchen Anwendungsfällen?
Wie im Dokument erwähnt, sind feinkörnige Handler-bezogene Vorverarbeitungsaufgaben Kandidaten für HandlerInterceptorImplementierungen, insbesondere ausgerechnete allgemeine Handler-Code- und Berechtigungsprüfungen. Auf der anderen Seite Filtereignet sich a gut für die Bearbeitung von Anforderungsinhalten und zum Anzeigen von Inhalten, wie z. B. mehrteilige Formulare und GZIP-Komprimierung. Dies zeigt normalerweise, wann der Filter bestimmten Inhaltstypen (z. B. Bildern) oder allen Anforderungen zugeordnet werden muss.