Różnica między filtrem a słuchaczem w Servlecie (Java EE)

W Servlecie znajdują się filtry i funkcje nasłuchujące. Chcę znać dokładną różnicę między filtrem a słuchaczem.

Author: informatik01, 2011-01-18

10 answers

Filtr Servlet służy do monitorowania żądania i odpowiedzi od klienta do servleta, lub do modyfikowania żądania i odpowiedzi, lub do audytu i dziennika.

Servlet Listener jest używany do nasłuchiwania zdarzeń w kontenerach internetowych, na przykład podczas tworzenia sesji lub umieszczania atrybutów w sesji lub jeśli pasywujesz i aktywujesz w innym kontenerze, aby zapisać się do tych zdarzeń, możesz skonfigurować listener w web.xml, Na przykład HttpSessionListener.

 66
Author: Dead Programmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-11 12:53:16

Filtry są używane do zapytań przed i po procesie. Spójrz na javax.servlet.Filter w swoim tomcat / jboss / inny kontener javadoc.

Gdzie jako słuchacze są jak wyzwalacze, które mogą być dołączone do zdarzeń w Twój serwer aplikacji(użyjmy tutaj terminu kontener). Dzięki słuchaczom możesz śledzić zmiany na poziomie aplikacji, sesji, cyklu życia, zmian atrybutów itp. Zaimplementowane interfejsy to javax.servlet.Listener interface.

Bazując na odpowiedziach @fnt poniżej, postaram się wyjaśnić kilka więcej. Słuchacze są kierowani do zmian w cyklu życia, bez konieczności wysyłania żądania klienta. Tak więc w przypadku jednego żądania klienta może wystąpić o wiele więcej zdarzeń cyklu życia, zanim żądanie zostanie usunięte. Przykład: Chcesz zarejestrować wszystkie sesje, że timeout. Należy pamiętać, że SesionTimeout to zdarzenie cyklu życia, które może się zdarzyć bez konieczności robienia czegokolwiek przez użytkownika. Dla takiego scenariusza słuchacz będzie odpowiedni.

Do kwestii logowania, gdy pojawi się żądanie. Nie ma bezpośredniego mapowania nowego żądania do równoważnego zdarzenia detektora (read lifecycle event). I dlatego dla każdego przychodzącego żądania, jeśli chcesz coś zalogować, Filtr moim zdaniem jest właściwą rzeczą do użycia.

Ten materiał z Oracle powinien być w stanie wyjaśnić trochę więcej filtry i słuchacze

HTH

 31
Author: Ayusman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-07 13:35:25

Filtr jest podobny do filtra wody, gdzie wartości przychodzące (request) i wychodzące (response) będą filtrowane.

Listener jest jak listening ( trigger) - w razie potrzeby będę wykonywany.

 20
Author: muhammed Younus attari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 10:34:10

Jedna istotna różnica jest często pomijana: podczas gdy słuchacze są wyzwalani na rzeczywiste fizyczne żądanie, filtry działają z wysyłaniem kontenerów serwletów. Dla jednego wywołania słuchacza może być wiele wywołań filtrów / serwletów.

Słuchacze vs filtry

Mapowanie filtrów typów dyspozytorów . Link jest nieco przestarzały - nie zawiera typu dyspozytora Servlet 3.0 Async. Można również określić typy dyspozytorów za pomocą adnotacji @WebFilter:

import javax.servlet.DispatcherType;
import javax.servlet.annotation.WebFilter;

@WebFilter(servletNames = { "My Servlet" },
    dispatcherTypes = { DispatcherType.REQUEST, DispatcherType.FORWARD })
 18
Author: Vsevolod Golovanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-25 12:47:53

Tekst z Java EE 6

Filtr

Filtr jest obiektem, który przekształca żądanie i odpowiedź(nagłówek oraz zawartość).

Słuchacze

Można monitorować i reagować na zdarzenia w cyklu życia servletu, definiując obiekty słuchacza, których metody są wywoływane, gdy występują zdarzenia cyklu życia.

 10
Author: adatapost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:25

Podczas gdy można modyfikować bieżący obiekt event wewnątrz słuchacza, można nie można zatrzymać wykonania bieżącej procedury obsługi zdarzeń w detektorze. Nie można również wyczyścić kolejki zdarzeń z poziomu słuchacza. Poza tym narzuconych różnic w możliwościach, są one również przeznaczone dla różne cele. Słuchacze skupiają się zazwyczaj na interakcjach między obsługi zdarzeń i modelu, podczas gdy filtry skupiają się na interakcja pomiędzy obsługą zdarzeń a kontrolerem.

Źródło : web

 4
Author: Clyde Lobo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-18 06:10:22

Po przeczytaniu wszystkich odpowiedzi i blogów to właśnie dostałem

Filtr

Filtr jest obiektem, który dynamicznie przechwytuje żądania i odpowiedzi na przekształcenie lub wykorzystanie informacji zawartych w prośby lub odpowiedzi.

Filtry zazwyczaj same nie tworzą odpowiedzi, ale zamiast zapewniają uniwersalne funkcje, które mogą być "dołączane" do każdego typu servlet lub strona JSP.

Filtr jest uruchamiany przed renderowaniem widoku ale po renderowaniu kontrolera odpowiedź.

Filtr jest używany w warstwie web tylko tak, jak jest zdefiniowany w web.xml.

Filtry są bardziej odpowiednie, gdy traktujesz zapytanie/odpowiedź jako system czarnej skrzynki. Będą działać niezależnie od tego jak jest servlet wdrożone.

Filtry są używane do wykonywania zadań filtrowania, takich jak logowanie uwierzytelnianie, audyt przychodzących zapytań ze stron www, konwersja, logowanie, kompresja, szyfrowanie i deszyfrowanie, wprowadzanie Walidacja itp.

Filtr Servlet jest używany tylko w warstwie www, nie można go używać poza kontekstem sieciowym.

Aby uzyskać więcej szczegółów na temat filtra http://array151.com/blog/servlet-filter/

Listener

Servlet Listener służy do nasłuchiwania zdarzeń w kontenerze sieciowym, na przykład podczas tworzenia sesji lub umieszczania atrybutu w sesji lub jeśli pasywujesz i aktywujesz w innym kontenerze, aby subskrybować te zdarzenia można skonfigurować listener w sieci.xml, na przykład, HttpSessionListener.

Słuchacze zostają wyzwalani na rzeczywiste fizyczne żądanie, które może być dołączone do zdarzeń na serwerze aplikacji .Ze słuchaczami możesz śledzić poziom aplikacji, poziom sesji, zmiany cyklu życia, atrybut zmiany itp.

Możesz monitorować i reagować na zdarzenia w cyklu życia servletu poprzez definiowanie obiektów słuchacza, których metody są wywoływane podczas cyklu życia wydarzenia występuje.

Więcej szczegółów : http://array151.com/blog/servlet-listener/

I tu jest różnica http://array151.com/blog/difference-between-servlet-filter-and-servlet-listener/

 4
Author: Sunil Garg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-05 04:50:55

Filter: Filter po prostu filtruje odpowiedź i żądanie pochodzące od klientów do serwletu.

Listener: jest jak wyzwalacz, gdy wystąpi jakikolwiek WYZWALACZ, podejmuje działanie.

 2
Author: geet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-15 10:22:53

Można łatwo mieć szorstki pomysł z angielskim znaczeniem tych dwóch. Filter służy do filtrowania zawartości / zasobu, które wchodzą/wychodzą z serwletu. Z drugiej strony, Listener jest tam, aby zrobić pewne powiązane rzeczy, gdy coś się stanie z aplikacją internetową (listening).

 2
Author: Abimaran Kugathasan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 19:00:21

W skrócie,

Filtr jest dla serwletu, przechwytujący żądania i odpowiedzi.

Listener jest przeznaczony dla aplikacji webowej, wykonującej ważne zadania na zdarzeniach na poziomie kontekstowym, sesyjnym itp.

 1
Author: Mawia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-29 08:25:50