Servletlerin main() metodu yoktur ve Servlet’lerin tum kontrolu Servlet Container’in altindadir.
Servlet Container’a ornek olarak Apache Tomcat’i verebiliriz.
Onceki bolumden hatirlayacagimiz gibi Web Server Application(ornegin Apache) istegi alir(request) eger istek static bir kaynaksa kendisi ilgilenir fakat eger istek Servlet icinse kendisi ilgilenmez bu istek ile Web Container Application ilgilenir.
Onceki yazida Apache Tomcat ‘ten bahsettik. Apache Tomcat hem HTTP Web Server hem de Servlet Container ozelligine sahiptir.
Servlet Container’in Gorevleri
Servlet Container , Servlet’ lerin yonetiminden(manage) ve calistirilmasindan(run) sorumludur. Servlet Container ‘in sorumluluklari ve sagladiklari sunlardir.
- Communication Support(Iletisim Saglamak) :
Servlet Container, Servlet ve Web Server arasinda iletisimi saglar. Boylece, ServerSocket yazmak, port dinlemek, stream olusturmak gibi konularla ugrasmamiza gerek kalmaz. Bu sayede sadece kendi uygulamizla ilgilenebiliriz. - Lifecycle Management(Yasam Dongusu Yonetimi):
Servlet Container, Servlet’lerin yasam dongusunden sorumludur. Servlet siniflarinin yuklenmesinden(loading classes), instantiating(yeni obje olusturma) ve initializing(ilk kullanima hazirlama) , Servlet metotlarini cagirma ve Servlet yasam dongusunu sonlandirma gibi gorevler Servlet Container tarafindan yapilir. - Multithreading Support(Coklu Kullanim Destegi)
Servlet Container, her request icin otomatik olarak Thread olusturur. - Declarative Security(Bildirimsel Guvenlik):
Servlet Container , web.xml dosyasini kullanir. web.xml dosyasina deployment descriptor denilir. Bu dosya araciligi ile hard-code(kodu doğrudan programın içine gömme) yapmadan guvenlik saglanabilir. - JSP Support (JSP Destegi)
Servlet Container, JSP dosyalarinin Java koduna cevirme (translation) isleminden sorumludur.
Servlet Container bizim icin thread,security,network gibi konularla ilgilenir. Bize de sadece projemizle ilgilenmek kaliyor.
Servlet’in Gorevleri
- Istemci(end-user) tarafindan gonderilen acik(explicit) bilgileri okumak:
Ornek olarak ,kullanici(end user) bilgileri ilgili alanlara yazarak HTML formu araciligiyla gonderir. Servlet araciligiyla bu gonderilen bilgilere ulasabiliriz. - Istemci(browser) tarafindan gonderilen kapali(implicit) bilgileri okumak :
Acik(explicit) bilgiden kasit HTML form araciligiyla gonderilen bilgilerdir. Kapali(implicit) bilgiden kasit arka plandaki bilgidir. cookieler ,media-type bilgisi gibi. Servletler ile bu bilgilere ulasabiliriz. - Sonuc Uretmek:
Veritabanina(database) erisim saglamak, Web Service cagirmak ya da cesitli Java uygulamalarina erismek gibi gorevleri yerine getirmekten sorumludur.Servlet, MVC yapida bir Java projesinde Controller ozelligine sahiptir. Ilerleyen yazilarda MVC yapisina uygun kucuk bir uygulama gelistirecegiz. - Acik(explicit) bilgiyi(dokumanlari) istemciye gondermek
Bu dokumanlar cesitli formatlarda gonderilebilir. HTML,XML, binary(GIF image), zip formati. Tabi ki HTML formati en cok kullanilan format olacaktir. - Kapali(explicit) HTTP cevabini(response) istemciye gondermek
Istemciye(tarayici/browser) gonderilecek olan dosyanin tip bilgisi(Content-type),Content-length, Caching parametreleri gibi bilgileri gondermek.