2009-07-23 2 views
7

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

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

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

ответ

19

Для того, чтобы получить куки-файлы, вам необходимо отправить его в HttpServletRequest.

HttpServletRequest httpReq = (HttpServletRequest) request; 

Причина, по которой ServletResponse класс не поддерживает куки, потому что протокол не necessarly HTTP в ServletRequest, вы не можете быть уверены, что есть печенье. Печенье - вещь Http.

2

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

5

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

Смежные вопросы