22 Eylül 2017 Cuma

Servlet spesifikasyonunda yer alan Filter ve Listener nelerdir?

Servlet Spesifikasyonu servletler dıişında iki bileşeni daha tanımlar. Bunlar filters (filitreler) ve listeners (dinleyiciler)'dir.
Filtreler (Filters)

Bir filter bir servlet'e, JSP'ye veya statik bir sayfaya istek (request) gönderilirken veya cevap (response) döndürülmeden önce araya girebilen(intercept) bir bileşendir. Bu merkezi görevlerin tüm isteklerden önce ve cevaplardan önce kolayca uygulanmasını sağlar. Bu merkezi görevler kontrol, loglama gibi işlemler olabilir. Filtreler request veya respnse nesnesinin body'sine ve header'ına tam erişim yetkisi vardır, bu şekilde çeşitli transformasyonlar yapabilirler.
Mesela request nesnesinin header'inde istemcinin compressed response kabul ettiğini kontrol ederek response'ın gövdesini compress (sıkıştırma) edebilir.
Bir filtre spesifik bir servlete uygulanabileceği gibi, isteklerin geldiği URL şablonuna uyan elementlere uygulanabilir. Bu şablonlar aynı path'le başlayan elementler olabildiği gibi aynı uzantılara sahip elementler de olabilir. Jason Hunter'ın filtrelerle ilgili makalesine buradan ulaşabilirsiniz. Bu makale çeşitli tiplerdeki filtrelerin nasıl geliştirilebeleceği, işlem zamanını ölçmede filtrelerin kullanımı, click and clickstreams izleme, response compression ve dosya yükleme gibi örenklerle açıklıyor.
Dinleyiciler (Listeners)
Dinleyeciler (Listeners) uygulmanızın belirli olaylara (event) nasıl tepki vereceğine karar veren yapılardır. Servlet spesifikasyonunun 2.3 versiyonu ile beraber servlet context için çeşitli listener tipleri tanımlanmıştır. Session ve request lifecycle eventleri("created" ve "destroyed" eventleri), session attribute eventleri ("added" ve "removed" eventleri), aynı zamanda session aktivasyonu ve pasifizasyonu eventleri(container tarafından kullanılan geçici olarak kaydedilen session durumu veya başka bir sunucuya session'un aktarılması).
Bütün bu listener çeşitleri Java event modelini kullanır. Başka bir ifadeyle bir listener bir veya daha fazla listener interface'ini implemente eden bir sınıftır. Interface eventlere göre metotları tarif eder. Listener sınıfı uygulama başladığında containere kayıt olur ve container event metodlarını eventler oluşunca çalıştırır.
Listener'ler için daha fazla detaya ve örneklere buradan ulaşabilirsiniz.

0 yorum: