Bilal Koçoğlu/ Aralık 10, 2018/ Servlet

ServletRequestListener

ServletRequestListener konusuna başlamadan, listener ve event kavramlarını önceki dersimizde anlattığımızı belirtmek isterim. Bu derste event ve listener kavramlarının bilindiği varsayılacaktır.

Servlet teknolojisindeki bazı belli başlı listener arabirimlerini tekrar gözden geçirmek gerekirse;

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

Bu listener arabirimlerinden ServletContextListener ve HttpSessionListener‘ı daha önceki derslerimizde incelemiştik. Bu dersimizde ise ServletRequestListener ve ServletRequestAttributeListener arabirimlerine bir örnek üzerinden göz atacağız. Request konusunda sıkıntıları olan arkadaşlar buradan ServletRequest ile ilgili derse ulaşabilirler.

ServletRequestListener

Bu interface, sunucuya bir request gönderildiğinde tetiklenir. Daha request ilgili servlete ulaşmadan request listener a gelir. Burada gelen requestin tüm parametrelerini kontrol edebilir, üzerinde değişiklikler yapabiliriz. Örnek verecek olursak birazdan yapacağımız örnekle request daha servlete gitmeden bu requestin hangi urlden geldiğini öğrendik. Aynı şekilde tüm parametrelere, varsa oluşturulmuş olan sessiona ve cookielere bu listener sayesinde ulaşabiliriz.
ServletRequestListener arabirimi içerisindeki override edilebilir methodlar;

  • public void requestDestroyed(ServletRequestEvent sre) : Request ilgili servlete ulaştıp görevini tamamladıktan sonra tetiklenir.
  • public void requestInitialized(ServletRequestEvent sre) : Sunucuya yeni bir request geldiğinde tetiklenir.

ServletRequestAttributeListener

ServletRequestAttributeListener arabirimi, mevcut requestteki değişiklikler hakkında bilgi sahibi olmamızı sağlar. Override edilebilir methodlarını incelediğimizde tam olarak ne demek istediğimi anlayacaksınız.

  • public void attributeAdded(ServletRequestAttributeEvent srae) : Requeste yeni bir attriute eklendiğinde tetiklenir.
  • public void attributeRemoved(ServletRequestAttributeEvent srae) : Requesten bir attribute kaldırıldığında tetiklenir. ServletRequestAttributeEvent  sayesinde kaldırılan attriute nin ismine ve değerine ulaşabiliriz.
  • public void attributeReplaced(ServletRequestAttributeEvent srae) : Request içerisindeki bir attribute güncellendiğinde tetiklenir. ServletRequestAttributeEvent sayesinde güncellenen attributenin güncellemeden sonraki isim ve değerine erişebiliriz.

Artık örneği görüp kod üzerinden bazı bilgiler verebiliriz.

dosya yapısı
ServletRequestListener
ServletRequestListener
 pom.xml

index.jsp
ServletLogin.java
CustomRequestListener.java
CustomRequstAttributeListener.java

Burada diğer örneklerimizden farklı olarak dikkatinizi çekmek istediğim bir nokta var. Önceki örneklerde oluşturduğumuz listenerları web.xmk sayfası içinde <listener> etiketleri içinde <listener-class> etiketi altında tanımlarken bu örnekte ihtiyaç kalmadı. Bunun sebebi listener sınıfının başındaki @WebListener() anotasyonudur. Bu sayede web kapsayıcısına bu sınıfın bir listener olduğunu bildirmiş oluruz (Tıpkı servletlerin başında kullandığımız @WebServlet gibi.).

 Örneği çalıştırdığımızda web browserda çok basit bir çıktı görsekte konsol ekranını incelediğimizde anlattığımız tüm listener methodları için log(kayıt) tutulduğunu inceleyebiliriz.

Bu konuyla birlikte servlet teknolojisinde event ve listener konusunu sonlandırmış bulunuyoruz. Bir sonraki konumuz filtreler. Soru ve hatalarınızı yorumlarda paylaşırsanız seviniriz. Başarılar dilerim.

Share this Post

Leave a Comment

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

*
*