2009-07-23 20 views
7

Tại sao cookie không thể được tham chiếu từ bộ lọc servlet? Nó chỉ có vẻ ngoài tôi rằng Java EE sẽ không cho phép bạn để khử trùng giá trị cookie:Bộ lọc Java EE không thể nhận cookie?

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

ServletRequest không hỗ trợ getCookies (như là trường hợp với HttpServletRequest).

Trả lời

19

Để nhận các cookie bạn cần truyền tới HttpServletRequest.

HttpServletRequest httpReq = (HttpServletRequest) request; 

Lý do mà ServletResponse lớp không hỗ trợ cookie là do giao thức không necessarly http trong một ServletRequest, bạn không thể chắc chắn có Cookies. Cookies là một điều Http.

2

Bạn biết rằng bạn thực sự có thể truyền nó đến HttpServletRequest, phải không? :-)

5

Servlets không bắt buộc phải truy cập qua giao thức HTTP. Vì vậy, servlet của bạn không phải là một HttpServlet - nó có thể là một servlet gửi các tài liệu cụ thể thông qua FTP, ví dụ. Bởi vì điều này, các thuộc tính cơ bản của một servlet được đóng gói trong các giao diện ServletRequest và ServletResponse, nhưng nếu bạn biết rằng servlet của bạn là một HTTPServlet, bạn có thể downcast xuống HttpServletRequest và HttpServletResponse tương ứng mà không có cơ hội nào của ClassCastException miễn là Servlet của bạn thực sự là một HttpServlet.

Các vấn đề liên quan