2009-07-23 9 views
7

¿Por qué no se puede hacer referencia a las cookies desde un filtro de servlet? Apenas se parece más allá de mí que Java EE no permitiría que permite desinfectar los valores de cookie:¿Los filtros Java EE no pueden obtener cookies?

public void doFilter(ServletRequest request, ServletResponse response, 
          FilterChain chain) 
          throws ServletException, IOException { 
    request. 
} 

ServletRequest no apoyar getCookies (como es el caso de HttpServletRequest).

Respuesta

19

Para obtener las cookies, debe convertirlo a HttpServletRequest.

HttpServletRequest httpReq = (HttpServletRequest) request; 

La razón de que ServletResponse clase no soporta las cookies es debido a que el protocolo no está necessarly http en un ServletRequest, no se puede estar seguro de que hay cookies. Las cookies son algo de Http.

2

¿Sabes que realmente puedes convertirlo a HttpServletRequest, derecho? :-)

5

No es necesario acceder a los servlets mediante el protocolo HTTP. Por lo tanto, su servlet no tiene que ser un HttpServlet; puede ser un servlet que envíe documentos específicos a través de FTP, por ejemplo. Debido a esto, las propiedades básicas de un servlet están encapsuladas en las interfaces ServletRequest y ServletResponse, pero si sabe que su servlet es un HTTPServlet, puede reducirlas a HttpServletRequest y HttpServletResponse, respectivamente, sin posibilidad de una ClassCastException mientras su Servlet es realmente un HttpServlet.