Фильтры Java EE не могут получить файлы cookie?

Почему на файлы cookie нельзя ссылаться из фильтра сервлета? Мне просто кажется, что Java EE не позволит вам дезинфицировать значения cookie:

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

ServletRequest не поддерживает getCookies (как в случае с HttpServletRequest).


person Zombies    schedule 23.07.2009    source источник


Ответы (3)


Чтобы получить куки, вам нужно привести их к HttpServletRequest.

HttpServletRequest httpReq = (HttpServletRequest) request;

Причина, по которой класс ServletResponse не поддерживает файлы cookie, заключается в том, что протокол не обязательно является http в ServletRequest, вы не можете быть уверены, что файлы cookie есть. Файлы cookie — это HTTP-вещь.

person jjnguy    schedule 23.07.2009

Доступ к сервлетам не требуется через протокол HTTP. Следовательно, ваш сервлет не обязательно должен быть HttpServlet — это может быть сервлет, который, например, отправляет определенные документы через FTP. Из-за этого основные свойства сервлета инкапсулированы в интерфейсы ServletRequest и ServletResponse, но если вы знаете, что ваш сервлет является HTTPServlet, вы можете понизить их до HttpServletRequest и HttpServletResponse соответственно без шанса ClassCastException, пока ваш сервлет действительно является HttpServlet.

person MetroidFan2002    schedule 23.07.2009

Вы ведь знаете, что на самом деле можете привести его к HttpServletRequest, верно? :-)

person ChssPly76    schedule 23.07.2009