2010-06-02 14 views

Odpowiedz

89

Użyj Filter, gdy chcesz filtrować i/lub modyfikować żądania na podstawie określonych warunków. Użyj Servlet, jeśli chcesz kontrolować, preprocesować i/lub postprocesować żądania.

Java EE tutorial wspomina o następujących filtrów:

Filtr jest obiektem, który może zmienić nagłówek i treść (lub oba) żądania lub odpowiedzi. Filtry różnią się od komponentów internetowych tym, że filtry zwykle same nie tworzą odpowiedzi. Zamiast tego filtr zapewnia funkcjonalność, którą można "podłączyć" do dowolnego zasobu sieciowego. W konsekwencji filtr nie powinien mieć żadnych zależności od zasobu sieciowego, dla którego działa jako filtr; w ten sposób można go skomponować z więcej niż jednym typem zasobu sieciowego.

Główne zadania, które filtr może wykonać to w następujący sposób:

  • Zapytanie żądanie i podjąć odpowiednie działania.
  • Zablokuj parę żądanie-odpowiedź przed przekazaniem dalej.
  • Zmodyfikuj nagłówki i dane żądania. Robisz to, zapewniając dostosowaną wersję żądania.
  • Zmodyfikuj nagłówki odpowiedzi i dane. Robisz to, zapewniając dostosowaną wersję odpowiedzi.
  • Współdziałać z zasobami zewnętrznymi.

uzyskać pozwolenia, Filter jest najlepsza. Oto prosty przykład kickoff tego, jak sprawdza filtry wnioski o zalogowanego użytkownika:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 
    if (((HttpServletRequest) request).getSession().getAttribute("user") == null) { 
     // User is not logged in. Redirect to login page. 
     ((HttpServletResponse) response).sendRedirect("login"); 
    } else { 
     // User is logged in. Just continue with request. 
     chain.doFilter(request, response); 
    } 
} 
+0

dzięki za wyjaśnienie +1 za to –

+0

Podane łącze jest bardzo dobre. dzięki za to też. –

15

Filtry najlepiej nadają się do autoryzacji. Dzieje się tak, ponieważ można je skonfigurować tak, aby działały dla wszystkich stron witryny. Potrzebujesz tylko jednego filtra, aby chronić wszystkie swoje strony.

+0

Wszystkie strony = strony, które mogą wymagać zalogowania. – UnKnown

1

Używając filtra możemy poprawić aplet performance-- gdy żądanie pochodzi możemy wykonać wstępne przetwarzanie na żądanie, jeśli zamówienie spełnia wtedy może przekazać do serwletu, w przeciwnym razie przekazać wiadomość klientowi, podając odpowiednie informacje na żądanie.