2009-07-23 9 views
7

Warum können Cookies nicht von einem Servlet-Filter referenziert werden? Es scheint nur über mich, dass Java EE würde nicht zulassen, dass Cookie-Werte sanieren:Java EE-Filter können keine Cookies erhalten?

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

ServletRequest nicht unterstützt getCookies (wie es der Fall mit HttpServletRequest ist).

Antwort

19

Um die Cookies zu erhalten, müssen Sie sie in eine HttpServletRequest umwandeln.

HttpServletRequest httpReq = (HttpServletRequest) request; 

Der Grund, dass ServletResponse Klasse keine Cookies unterstützt, da das Protokoll nicht http in einer ServletRequest necessarly ist, können Sie nicht sicher sein können, gibt es Kekse. Cookies sind eine Http-Sache.

2

Sie wissen, dass Sie es tatsächlich auf HttpServletRequest werfen können, richtig? :-)

5

Auf Servlets muss nicht über das HTTP-Protokoll zugegriffen werden. Daher muss Ihr Servlet kein HttpServlet sein - es kann sich beispielsweise um ein Servlet handeln, das bestimmte Dokumente über FTP versendet. Aus diesem Grund sind die grundlegenden Eigenschaften eines Servlets in den ServletRequest- und ServletResponse-Schnittstellen gekapselt. Wenn Sie jedoch wissen, dass Ihr Servlet ein HTTPServlet ist, können Sie diese in HttpServletRequest bzw. HttpServletResponse ablegen, ohne dass eine Chance für eine ClassCastException besteht ist wirklich ein HttpServlet.