Servlet gegen Filter

Was ist der Unterschied zwischen einem Servlet und Filter ? Was empfehlen Sie für die Autorisierung von Seiten?

Verwenden Sie einen Filter wenn Sie Anforderungen basierend auf bestimmten Bedingungen filtern und / oder ändern möchten. Verwenden Sie ein Servlet wenn Sie Anfragen steuern, vorverarbeiten und / oder nachbearbeiten möchten.

Das Java EE-Tutorial erwähnt die folgenden Filter:

Ein Filter ist ein Objekt, das den Header und Inhalt (oder beides) einer Anfrage oder Antwort transformieren kann. Filter unterscheiden sich von Web-Komponenten darin, dass Filter normalerweise selbst keine Antwort erzeugen. Stattdessen bietet ein Filter functionen, die an jede Art von Webressource “angehängt” werden können. Folglich sollte ein Filter keine Abhängigkeiten von einer Web-Ressource haben, für die er als Filter agiert. Auf diese Weise kann es mit mehr als einer Art von Web-Ressource zusammengestellt werden.

Die wichtigsten Aufgaben, die ein Filter ausführen kann, sind folgende:

  • Fragen Sie die Anfrage ab und handeln Sie entsprechend.
  • Verhindern Sie, dass das Anfrage-Antwort-Paar weitergeht.
  • Ändern Sie die Anforderungsheader und Daten. Sie tun dies, indem Sie eine angepasste Version der Anfrage bereitstellen.
  • Ändern Sie die Antwortheader und Daten. Sie tun dies, indem Sie eine angepasste Version der Antwort bereitstellen.
  • Interagieren Sie mit externen Ressourcen.

Für die Autorisierung ist ein Filter am besten geeignet. Im Folgenden finden Sie ein grundlegendes Beispiel für die Art und Weise, wie ein Filter Anforderungen für den angemeldeten Benutzer überprüft:

 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { if (((HttpServletRequest) request).getSession().getAttribute("user") == null) { // User is not logged in. Redirect to login page. ((HttpServletResponse) response).sendRedirect("login"); } else { // User is logged in. Just continue with request. chain.doFilter(request, response); } } 

Filter sind am besten für die Autorisierung geeignet. Dies liegt daran, dass sie so konfiguriert werden können, dass sie für alle Seiten einer Site ausgeführt werden. Sie benötigen also nur einen Filter, um alle Ihre Seiten zu schützen.

Unter Verwendung des Filters können wir die Servlet-performance verbessern – wenn eine Anfrage kommt, können wir eine Vorverarbeitung auf Anfrage durchführen, wenn die Anforderung erfüllt ist, können wir an das Servlet weiterleiten, andernfalls geben wir dem Client eine entsprechende Information in der Anforderung.