2012-09-10 14 views
13

Ich habe Servlets und Filter für Jahre zu schreiben, und es ist etwas, das mir ein wenig immer geärgert hat - mit Filter die Überprüfung und das Gießen von ServletRequest und ServletResponse Parametern HttpServletRequest und HttpServletResponse, vor allem, da es zu keiner Standard HttpFilter Basisklasse Mach das für dich - im Gegensatz zu Servlets.Wann würde javax.servlet.Filter.doFilter (ServletRequest req, ServletResponse res) mit etwas anderem als HttpServletRequest/Response aufgerufen werden?

Die Frage ist - wann würden Sie jemals etwas anderes sehen, dass HttpServletRequest/HttpServletResponse zu Ihrem Servlet/Filter übergeben wird und was sollten Sie tun, wenn Sie tun?

+1

Die JSF-Dienstprogrammbibliothek OmniFaces hat einen ['HttpFilter'] (https://showcase-omnifaces.rhcloud.com/showcase/filters/HttpFilter.xhtml). – BalusC

Antwort

12

In einer noch zu verwirklichenden Welt, in der neben HttpServlets noch andere Servlet-Typen existieren.

+1

Wort. Was manche als "Wir brauchen es vielleicht einmal" -Architektur bezeichnen. Oder was sie bei Toyota "Verschwendung" nennen. – pap

+0

Danke dafür - Ich habe meine eigene HttpFilter-Klasse basierend auf dem, was HttpServlet macht, erstellt und ich werde mich nur darum kümmern, es zu ändern, wenn jemand ein neues Protokoll für das Web erfindet. – pauli

+2

@pauli Es muss kein neues Protokoll nehmen. Sie können sich beispielsweise ein FTPServlet vorstellen. – EJP

0

Von dem, was ich über die API verstehe, ist Servlet-Spezifikationen, dass das Servlet-Framework für HTTP/Web speziell erstellt wurde.

Die im Referenzabschnitt der Servlet-Spezifikation genannten Protokolle beziehen sich alle nur auf HTTP.
RFC 1945 Hypertext Transfer Protocol (HTTP/1.0)
RFC 2616 Hypertext Transfer Protocol (HTTP/1.1)
RFC 2617 HTTP-Authentifizierung: Basic und Digest-Authentifizierung
RFC 2324 Hypertext Coffee Pot Control Protocol (HTCPCP/1.0) - Das basiert auf HTTP

All dies sind HTTP-Protokolle.

Auch die spec Mandate dies:

Alle Servlet-Container müssen HTTP als Protokoll für Anfragen und Antworten unterstützen, kann aber auch andere Request/Response-basierte Protokolle wie HTTPS (HTTP über SSL) unterstützen.

Und der Grund für GenericServlet mit -> HttpServlet ist die Generalisierung haben -> in Richtung Spezialisierung Art Hierarchie in der API-Struktur in der API.

Verwandte Themen