Servlet Java teknolojisinin CGI
programlamaya verdiği cevaptır. Web sunucu üzerinde çalışan ve web
sayfası üreten programlardır. Çalışırken web sayfası üretmek çok
yararlıdır ve pek çok sebebi vardır.
Kullanıcı tarafından gönderilen datalar üzerine oluşturulan web sayfalarıdır. Örnek olarak : arama motorlarının sonuç sayfası bu yöntemle oluşturulur ve aynı zamanda e-ticaret için siparişleri alan program parçacıklarıdır.
Veri sık sık değişir.Örnek olarak hava raporu yada haber sayfasındaki başlıklar dinamik olarak üretilmelidir yada güncellenmişse sayfanın eski halini üretmelidir. {mosgoogle}
Web sayfası birleşik veritabanı veya diğer kaynaklardan bilgileri kullanır.Örnek olarak: Bunu bir online dükkan açmak için kullanabiliriz. Web sayfasında o anki fiyatlar ve stoktaki malzeme miktarı listelenebilir.
Servletlerin geleneksel CGI’ ya göre avantajlarını inceleyelim:
Java servletler daha etkili,kullanımı kolay,güçlü,genişletilmeye açık ve geleneksel CGI’ ya göre daha ucuzdur.
1. Etkin Klasik CGI’ da her http isteği için yeni bir process başlatır. Servlet de ise Java Sanal Makinası (Java Virtual Machine) herbir http isteğini bekler ve bunları normal bir process olarak değil,düşük öncelikli bir Java çoğullaması (thread) olarak ele alınır. Eğer klasik CGI’da bir CGI programına aynı anda N tane istek geldiğinde CGI program kodu belleğe N defa yüklenir. Servlet’de ise N tane çoğullama (thread) olsada belleğe sadece bir tek servlet class yüklenir.
2. ElVerişli,Uygun HTML formlarda verilerin çözümlenmesi ve gönderilmesi, http başlıklarının okunması ve ayarlanması cookilerin kullanılması, oturum(session) takip edilmesi için servletlerin geniş bir alt yapısı vardır.Verilecek birkaç basit komut yardımıyla tüm bu işler halledilebilir.CGI ‘da ki parametreleri tek tek ayırıp değişkenlere atma işleminden kurtulmuş oluyoruz.
3. Güçlü,Etkili Klasik CGI ile yapılması çok zor veya imkansız işler servletler sayesinde kolaylıkla yapılması sağlanmıştır. Servletler Web sunucusu ile direk haberleşebilir (Klasik CGI programları direk haberleşemez.)
Servletler ayrıca büyük boyutta verileri kendi aralarında paylaştırabilir, kolay kullanılabilecek şekilde veritabanı bağlantı havuzu (Database Connection Pool) oluşturmak gibi pek çok işi de yapabilir.
Sunucu – istemci arasındaki bilgi akışını düzenler, session(oturum) ve önceki işlemlerin takibini basitleştirir.
4. Taşınabilir Servletler Java’da yazılır ve standartlaşmış bir API’ye de uyarlar. Servletler değiştirilmeden Apache,Microsoft IIS veya WebStar gibi web sunuculerı üzerinde kullanılabilir. Gelişmiş pekçok web sunucu için direk veya plug-in (ekleme) olarak servlet desteği vardır. 5. Ucuz Kişisel veya küçük çapta web sayfaları için kullanılan ücretsiz veya çok ucuz web sunusu vardır.Apache dışında ticari-kaliteli web sunucular oldukça pahalıdır.
Biz projemizde servletlerimizi çalıştırması için Tomcat programını kullandık. Tomcat, Servlet barındırıcı(container) ve Java Server Page(Java sunucu sayfası) uygulama programıdır. Tomcat tek başına kullanılacağı gibi,pek çok popüler web sunucularla entegre olarak da çalışabilir.
6.1.Stand-Alone servlet container: Bunlar web sunucuların önemli bir kısmını oluştururlar.Tek bir program vardır ve gelen tüm istekleri karşılar. Servlet barındırıcı(container) tek başına da kullanılabilir ama statik sayfalardaki performansı asla popüler web sunucular kadar iyi olamaz.
6.2.Inprocess Servlet container: Java barındırıcı(container) uygulaması ve web sunucu eklentileri (plug-in) birleşimi olan servlet barındırıcılardır.Web sunucu eklentisi,web sunucunun adres uzayında bir Java Sanal Makinesi açar ve Java Barındırıcının çalışmasını sağlar. Bir in-process barındırıcı çoklu-çoğullama (multi-thread) tek işlemcili sunucular için uygundur ve çok iyi performans sağlamaktadır fakat sağlamlık konusunda sınırlamalar vardır.
Tomcat yukarıdaki iki moddada çalışabilir.2. seçenek için web sunucu ile haberleşebilmesini sağlayacak bir adaptör yazılama ihtiyaç vardır. Biz Tomcat ‘i 1. seçenekteki gibi kullandık.
Apache web sunucusu için : http://localhost
Tomcat servlet barındırıcı için http://localhost:8080
Adreslerini kullanarak ilgili sayfalara ulaşabiliyoruz.