【问题标题】:Java EE Filters not able to get cookies?Java EE 过滤器无法获取 cookie?
【发布时间】:2010-11-13 12:16:49
【问题描述】:

为什么不能从 servlet 过滤器中引用 cookie? Java EE 不允许您清理 cookie 值,这似乎超出了我的理解:

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

ServletRequest 不支持 getCookies(与 HttpServletRequest 一样)。

【问题讨论】:

    标签: java servlets cookies jakarta-ee servlet-filters


    【解决方案1】:

    不需要通过 HTTP 协议访问 Servlet。因此,您的 servlet 不必是 HttpServlet - 例如,它可以是通过 FTP 发送特定文档的 servlet。因此,servlet 的基本属性都封装在 ServletRequest 和 ServletResponse 接口中,但是如果您知道您的 servlet 是 HTTPServlet,则可以将它们分别向下转换为 HttpServletRequest 和 HttpServletResponse,只要您的 Servlet 就不会出现 ClassCastException是真正的 HttpServlet。

    【讨论】:

      【解决方案2】:

      为了获取 cookie,您需要将其转换为 HttpServletRequest

      HttpServletRequest httpReq = (HttpServletRequest) request;
      

      ServletResponse 类不支持 cookie 的原因是因为 ServletRequest 中的协议不一定是 http,你不能确定有 cookie。 Cookie 是一种 Http 的东西。

      【讨论】:

        【解决方案3】:

        您确实知道您实际上可以将其转换为HttpServletRequest,对吗? :-)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-05
          • 1970-01-01
          • 2015-08-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多