2009-07-23 82 views
7

爲什麼cookie不能被servlet過濾器引用?它只是似乎超出了我的Java EE不會讓你清理cookie值:Java EE過濾器無法獲取Cookie?

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

ServletRequest中不支持的getCookies(如與HttpServletRequest的情況下)。

回答

19

爲了得到cookie,你需要把它投到HttpServletRequest

HttpServletRequest httpReq = (HttpServletRequest) request; 

ServletResponse類不支持cookie的原因是因爲該協議沒有在ServletRequest necessarly HTTP,你不能確定有餅乾。餅乾是一個Http的東西。

2

你確實知道你實際上可以將它投射到HttpServletRequest,對吧? :-)

5

Servlet不需要通過HTTP協議訪問。因此,您的servlet不一定是HttpServlet - 例如,它可能是一個通過FTP發送特定文檔的servlet。正因爲如此,servlet的基本屬性被封裝在ServletRequest和ServletResponse接口中,但是如果您知道您的servlet是HTTPServlet,那麼您可以將它們分別下載到HttpServletRequest和HttpServletResponse,而不會發生ClassCastException,只要您的Servlet是一個真正的HttpServlet。