2012-09-10 14 views
13

He estado escribiendo servlets y filtros desde hace años y es algo que siempre me ha molestado un poco - la inspección y vaciado de ServletRequest y ServletResponse parámetros a HttpServletRequest y HttpServletResponse, en especial con filtros ya que no hay estándar de la clase base para HttpFilter haz esto por ti, a diferencia de los servlets.¿Cuándo se invocará javax.servlet.Filter.doFilter (ServletRequest req, ServletResponse res) con algo que no sea HttpServletRequest/Response?

La pregunta es: ¿cuándo vería alguna otra cosa que HttpServletRequest/HttpServletResponse pasando a su servlet/filtro y qué debería hacer si lo hace?

+1

La biblioteca de utilidades JSF OmniFaces tiene un ['HttpFilter'] (https://showcase-omnifaces.rhcloud.com/showcase/filters/HttpFilter.xhtml). – BalusC

Respuesta

12

En un mundo aún por realizar donde hay otros tipos de servlets además de HttpServlets.

+1

Palabra. Lo que algunos llaman el enfoque de arquitectura "lo podríamos necesitar algún día". O lo que ellos llaman "desperdicio" en Toyota. – pap

+0

Gracias por eso. Creé mi propia clase HttpFilter basada en lo que hace HttpServlet y solo me preocuparé por cambiarla cuando alguien invente un nuevo protocolo para la web. – pauli

+2

@pauli No tiene que tomar un nuevo protocolo. Puede imaginar un FTPServlet por ejemplo. – EJP

0

Según lo que entendí al pasar por API, las especificaciones de servlet es que el marco de servlet se ha creado específicamente para el uso de HTTP/web.

Los protocolos mencionados en la sección de referencia de la especificación de servlet están todos relacionados con HTTP only viz.
RFC 1945 Hypertext Transfer Protocol (HTTP/1.0)
RFC 2616 Hypertext Transfer Protocol (HTTP/1.1)
RFC 2617 autenticación HTTP: Basic y autenticación implícita
RFC 2324 de hipertexto Coffee Protocolo de Control de Pot (HTCPCP/1,0) - Esto está basado en HTTP

Todos estos son protocolos HTTP.

también los mandatos de especificaciones esto:

Todos los contenedores de servlets deben apoyar HTTP como protocolo para las peticiones y respuestas, pero pueden también apoyar a otros protocolos basados ​​petición/respuesta tales como HTTPS (HTTP sobre SSL).

Y la razón para tener GenericServlet -> HttpServlet es tener la generalización -> hacia el tipo de jerarquía de especialización en la estructura API en la API.

Cuestiones relacionadas