ServletContextEvent & ServletContextListener
Uygulama deploy ve undeploy sırasında gerçekleştirilecek işlemler burada
tanımlanır. Uygulama başlatılırken veritabanı bağlantısı, veritabanında tablo
oluşturma gibi işlemler gerçekleştirilebilir. ServletContextListener bir interface'tir ve 2 tane metod içerir: contextDestroyed, contextInitialized. contextDestroyed server kapatılırken, contextInitialized server açılırken çalıştırılır. Her iki metod da ServletContextEvent tipinde bir event parametresi alır. Bu metodlar web container tarafından çağrılır ve bu event parametresini web container yollar ve sadece context bilgisini tutar, getServletContext() metodu ile context bilgisine erişilebilir. Daha detaylı bilgi için Tomcat dokümantasyonu incelenebilir. Web container'a oluşturulan listener sınıfı web.xml'den bildirilir.
Kullanımı:
web.xml
<listener><listener-class>MyListener<listener-class></listener>
MyListener.java
public class MyListener implements ServletContextListener{
public void contextInitialized(ServletContextEvent event) { ... }public void contextDestroyed(ServletContextEvent event) { ... }}
HttpSessionEvent & HttpSessionListener
Yeni bir session oluşturulurken ve silinirken otomatik yapılması istenen işlemler için bu listener kullanılır. Kullanıcı giriş yaptığı zaman aktif kullanıcı sayısını arttırmak, kullanıcı takibi için cookie oluşturmak vs işlemler burada yapılabilir. ServletContextListener'a benzer olarak HttpSessionListener da SessionCreated ve SessionDestroyed metodları içerir ve parametre olarak HttpSessionEvent alır. HttpSessionEvent sadece HttpSession bilgisini tutar. Bu bilgiye sessionEvent.getSession() ile ulaşılabilir. HttpSession id, oluşturma zamanı, harici bilgiler(setAttribute) vs bilgiler tutar. Web container tarafından yönetilir ve her bir yeni session oluşturulduğu zaman( burası önemli: servlet açıldığı zaman değil servlet içinde getSession() denildiği veya session oluşturulduğu zaman ) veya session bittiği zaman( session bitmesi session.invalidate() komutu ile sağlanır, yani tarayıcıyı kapatmak yetmez, session timeout da gerçekleşebilir ) çağırılır. Kullanımı Servlet için olanın aynısı, sadece ServletContextListener yerine HttpSession Listener implement ediliyor.
Context attribute değişimi, servlet'a istek gelmesi vs durumlar için de ayrı listenerlar bulunuyor. Bunlara ilk başta verilen linklerle veya istenilen web sunucusunun dokümantasyonuna girerek öğrenilebilir.
0 yorum:
Yorum Gönderme