Bilal Koçoğlu/ Kasım 29, 2018/ Servlet

Event and Listener in Servlet

ServletContextEvent ve ServletContextListener kavramlarına geçmeden önce “Event Nedir ?” ve “Listener Nedir?” sorularının cevaplarını vererek başlayalım.

Event kavramı, temelde bir şeylerin ortaya çıkışıdır. Nesnenin durumunda olan değişiklikler event olarak tanımlanabilir. Bu tanımı örneklerle daha anlaşılır hale getirmek gerekirse; hata(exception) oluşması, yeni bir session(Session kavramını bir önceki derste detaylıca incelemiştik.) oluşturulması, projenin compile edilmesi sırasında veritabanı tablolarının oluşturulması(Bu konu Hibernate teknolojisini incelerken gösterilecek.) gibi daha birçok görevin gerçekleştirilmesi event olarak adlandırılabilir.

Listener kavramı ise, adından da kısmen anlaşılacağı üzere yukarıda bahsettiğimiz görevlerden biri gerçekleşip event meydaya geldiğinde haberdar olamamızı sağlayan yapılardır. Her event için bir listener mevcuttur. Bu iki yapıyı herhangi bir olay gerçekleştiğinde haberdar olmak istediğimizde kullanırız.

Javax.servlet ve javax.servlet.http paketlerinde birçok event sınıfları ve listener arabirimleri mevcuttur. Şimdi bunlardan birkaç tanesini inceleyelim.

Event Sınıfları

  • ServletRequestEvent
  • ServletContextEvent
  • ServletRequestAttributeEvent
  • ServletContextAttributeEvent
  • HttpSessionEvent
  • HttpSessionBindingEvent

Listener Arabirimleri

  • ServletRequestListener
  • ServletRequestAttributeListener
  • ServletContextListener
  • ServletContextAttributeListener
  • HttpSessionListener
  • HttpSessionAttributeListener
  • HttpSessionBindingListener
  • HttpSessionActivationListener

Şimdi ise bazı event-listener ikililerini inceleyelim.

ServletContextEvent ve ServletContextListener

ServletContextEvent, sunucuda web uygulaması çalışmaya başladığında gerçekleşir. Bununla beraber ServletContextEventListener tetiklenmiş olur. Veritabanı bağlantısı oluşturma, veritabanı tablolarını oluşturma gibi web uygulamasının çalışmaya başladığı anda bir iş yapmak için ServletContextEventListener’ı kullanmalıyız.

» ServletContextEvent sınıfının yapıcı methodu : ServletContextEvent sınıfının yalnızca bir tane constructor tanımlanmıştır. Web container ServletContext nesnesini oluşturduktan sonra ServletContextEvent nesnesini oluşturur.
public ServletContext getServletContext() ⇒ ServletContextEvent yapıcı methodu.

» ServletContextListener Arabirimi Methodları : ServletContextListener arabiriminde yukarıda bahsettiğimiz veritabanı bağlantısı, tablo oluşturma gibi işlemleri geçekleştirmek için biz java developerların uygulaması gereken iki farklı method vardır. Bunlar;
public void contextInitialized(ServletContextEvent e) ⇒ Uygulama sunucuda çalışmaya başladığında çağrılır.
public void contextDestroyed(ServletContextEvent e) ⇒ Uygulama sunucudan çıkarıldığında çağrılır.

Şimdi bir örnekle ServletContextEvent ve ServletContextListener ‘ı pekiştirelim.

dosya yapısı
ServletContextEvent and ServletContextListener

ServletContextEvent and ServletContextListener Dosya Yapısı

index.jsp

CustomListener.java

FirstServlet.java

web.xml

pom.xml

Şimdi ise örnek üzerinde web.xml sayfasına bakmanızı istiyorum. Görmüş olduğunuz gibi kendi yazdığımız CustomListener sınıfımızı <listener> etiketi içindeki <listener-class> etiketinde uygulamamıza bildirdik. Bunun üzerinde özellikle durmak istedim çünkü bu işlemi yapmazsanız uygulamanız bu sınıfın bir listener olduğunu bilmeyecek ve dolayısıyla bu class hiç çalışmayacaktır. Bu şekilde oluşturduğunuz bütün listener ları bu etiketler içinde tanımlamanız gerekir.

Uygulamanın verdiği çıktılara birlikte göz atalım.

ServletContextEvent and ServletContextListener

ServletContextEvent and ServletContextListener

ServletContextEvent and ServletContextListener

ServletContextEvent and ServletContextListener

Bir de konsol çıktılarına göz atalım. Çünkü tanımladığımız listener içinde eventlerin tetiklenmesi halinde konsola “Uygulama sunucuda başlatıldı !” ve “Uygulama sunucudan kaldırıldı !” yazdırmıştık.

ServletContextEvent and ServletContextListener

ServletContextEvent and ServletContextListener

Soru, hata ve görüşlerinizi yorumlarda bizimle paylaşabilirsiniz. Bir sonraki derste HttpSessionEvent ve HttpSessionListener konularını inceleyeceğiz. İyi çalışmalar dilerim.

Share this Post

Leave a Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*