2009-07-23 5 views
7

Pourquoi les cookies ne peuvent-ils pas être référencés à partir d'un filtre de servlet? Il semble juste au-delà de moi que Java EE ne vous permettra de désinfecter les valeurs de cookie:Java EE Filtres pas en mesure d'obtenir des cookies?

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

ServletRequest ne supporte pas getCookies (comme cela est le cas avec HttpServletRequest).

Répondre

19

Pour obtenir les cookies, vous devez les convertir en HttpServletRequest.

HttpServletRequest httpReq = (HttpServletRequest) request; 

La raison pour laquelle ServletResponse classe ne supporte pas les cookies est parce que le protocole n'est pas forcement http dans un ServletRequest, vous ne pouvez pas être sûr qu'il ya des cookies. Les cookies sont une chose de Http.

2

Vous savez que vous pouvez réellement le lancer à HttpServletRequest, non? :-)

5

Les servlets ne doivent pas être accessibles via le protocole HTTP. Par conséquent, votre servlet ne doit pas nécessairement être un HttpServlet - il peut s'agir d'une servlet qui envoie des documents spécifiques via FTP, par exemple. Pour cette raison, les propriétés de base d'une servlet sont encapsulées dans les interfaces ServletRequest et ServletResponse, mais si vous savez que votre servlet est un serveur HTTPS, vous pouvez les rediriger vers HttpServletRequest et HttpServletResponse respectivement sans aucune chance de ClassCastException tant que votre servlet est vraiment un HttpServlet.