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.