Spis treści
Listenery HTTP
Autor: Marcin Kasiński
21.01.2011 13:24:00 +0200
HttpSessionListener
Jest to listener związany z sesją HTTP. Pozwala on na wykonywanie dowolnych operacji, które będą trigerowane przy operacjach związanych z sesja HTTP, takich jak utworzenie, czy tez usuniecie sesji. Aby we własnej aplikacji mieć możliwość wykorzystania tej funkcjonalności należy utworzyć klasę implementującą interfejs HttpSessionListener. Interfejs HttpSessionListener posiada dwie metody, które w naszej klasie musza być zaimplementowane:
- sessionCreated(HttpSessionEvent event)metoda ta jest wywoływana za każdym razem, kiedy tworzona jest sesja HTTP
- sessionDestroyed(HttpSessionEvent event)metoda ta jest wywoływana za każdym razem, kiedy sesja HTTP jest usuwana
Metody te jako parametr przyjmuje klasę HttpSessionEvent. Z obiektu tego następnie można pobrać obiekt sesji, której zdarzenie dotyczy.
HttpSession session=event.getSession()
Po przygotowaniu takiej klasy będącej listenerem należy w deskryptorze (pliku web.xml) poinformować, że w aplikacji wykorzystujemy listenera. Dokonujemy tego poprzez umieszczenie w nim wewnątrz bloku web-app kolejnego wpisu o strukturze listener /listener-class, gdzie listener-class wskazuje na nazwę klasy wraz z pakietem. Przykład takiego wpisu może mieć postać :
<web-app id="WebApp"> <display-name>MyWebApp</display-name> <listener> <listener-class>testapp.MySessionListener </listener-class></listener> ... </web-app>
Najczęstszym zastosowaniem tego listenera jest wykorzystanie drugiej z tych metod w celu usunięcia z systemu pozostałości po kliencie, którego sesja właśnie wygasła. Jeśli np. w trakcie pracy aplikacji w bazie danych przechowujemy jakieś dane tymczasowe, to wskazane jest, aby po zakończeniu pracy klienta wskazane jest, aby skasować z bazy dane skojarzone z jego sesja.
ServletContextListener
Jest to listener związany z kontekstem aplikacji. Pozwala on na wykonywanie operacji, które będą trigerowane podczas działań związanych z uruchomieniem i zatrzymaniem aplikacji WWW. Interfejs ServletContextListener posiada dwie metody, które musi posiadać klasa go implementująca.
- contextInitialized(ServletContextEvent event)metoda ta jest wywoływana podczas uruchamiania aplikacji
- contextDestroyed(ServletContextEvent event)metoda ta jest wywoływana podczas uruchamiania aplikacji
Listener ten najczęściej jest używany, kiedy w aplikacji webowej wywoływane są metody nie poprzez interakcje z użytkownikiem, tylko np. co określony czas. W takim przypadku w metodzie contextInitialized możemy utworzyć własny watek, w którym operacje takie są wykonywane. Inne sposoby utworzenia takiego wątku (np. w serwlecie) nie są zalecane w specyfikacji JEE.
powrótKomentarze
Dodaj Komentarz
Newsletter
Jeżeli chcesz być na bieżąco informowany o aktualnościach i poradach IT zapisz się do naszego newslettera.