2009-07-23 11 views
7

なぜサーブレットフィルタからクッキーを参照できないのですか? (HttpServletRequestを持つ場合のように)Java EEフィルタはCookieを取得できません。

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

のServletRequestはgetCookiesをサポートしていません:ちょうどのJava EEは、クッキー値をサニタイズすることができないだろうと私を超えそうです。

答えて

19

クッキーを入手するには、HttpServletRequestにキャストする必要があります。

HttpServletRequest httpReq = (HttpServletRequest) request; 

ServletResponseクラスはクッキーをサポートしていないという理由は、プロトコルがServletRequestでHTTPをnecessarlyされていないので、あなたはクッキーがあることを確認することはできませんです。クッキーはHttpのものです。

2

あなたは実際にHttpServletRequestにキャストすることができますか? :-)

5

サーブレットは、HTTPプロトコルを介してアクセスする必要はありません。したがって、サーブレットはHttpServletである必要はありません。たとえば、サーブレットはFTP経由で特定のドキュメントを送信します。このため、サーブレットの基本的なプロパティはServletRequestとServletResponseのインタフェースにカプセル化されていますが、サーブレットがHTTPServletであることが分かっている場合は、HttpServletRequestとHttpServletResponseにそれぞれダウンキャストして、サーブレット本当にHttpServletです。

関連する問題