İçindekilerGirişİndex
YukarıİlkÖnceki YokSonrakiSon
Geriİleri
Yazdır

Servlet ve JSP Teknolojileri

HTML

Applet'lerin Internet'te client-side'daki neredeyse rakipsiz bir teknoloji olmasına karşın, Java'nın server-side'da da bir teknolojisi bulunmaktadır : Servlet. Servlet' teknolojisini anlamak için öncelikle HTML ve CGI kavramlarını anlamak gerekir. Herhangi bir linki tıkladığımızda veya browser adres alanında bir URL girdiğimizde Server'da ilgili HTML sayfası bulunur ve kullanıcının önüne getirilir. HTML içerisinde image ve applet gibi bileşenlere referans varsa onlar da tekrar server'dan getirilip sayfanın içine gömülür. Ancak, bu türde bir işlem 'static' yani kullanıcından kulalnıcıya, zamandan zamana değişmeyen sayfalar için geçerilidir. Oysa şu anda bir çok internet sitesinde her kullanıcı için ayrı işlem yapan, veritabanındaki veri değişikliklerine göre sürekli değişik sayfa getiren bir çok sayfa vardır. Bunalara 'dynamic' denir.

CGI

Dinamic sayfa yaratmanın ilk tekniği CGI (Ortak Kapı Arayüzü - Common Gateway Interface)'dir. Buna göre kullanıcı bir link'i tıkladığında veya bir URL girdiğinde server'da bir program çalıştırılır ve o programın üretiği HTML client'a getirilir. Browser server'da neler olduğunu bilmez, o bir URL istemiştir ve karşılığında bir HMTL almıştır. Server'da yapılan işlem static sayfalardan farklıdır. Static sayfalarda sadece server'daki dosya bulunur ve client'a iletilir. CGI sisteminde HTML dosya yerine bir programın çıktısından alınır.

Kullanıcı Girdisi : Formlar ve Cookie'ler

Bazı durumlarda kullınıcıdan bilgi alınaması gerekir. Bunlar HTML formları aracılığıyla yapılır. Kullanıcı bir formda değerleri girdikten sonra bir 'submit' (gönder) düğmesine basar ve browser server'a URL ile birlikte kullanıcıların girdiği parametreleri de gönderir. CGI programı da o parametreleri alır, değerlendirir ve uygun bir sonucu HTML olarak üretir. Parametrelerin ille de kullanıcı tarafından girilmiş olması gerekmez. Bazı parametreler kullanıcı farkında olmadan gizi olarak formun içerisine konur ve 'submit' tıklandığıyla gerçekten kullanıcı girmiş gibi server'a gider. Cookie denen bir başka bilgi alış verişi öğesi daha vardır. Bir sitede herhangi bir sayfadan kullanıcının makinesinde saklanmak üzere bir bilgi gönderilebilir. Kullanıcının o sitede diğer sayfalara geçtiğinde bu bilgi her istekle birlikte server'a gönderilir. Ancak bu bilgi bağlanılan diğer sitelere gitmez, sadece cookie'yi atan site'ye yollanır. Bir sitenin başkası hakkında bu şekilde bilgi edinmesi mümkün değildir.

Servlet'ler

CGI sistemi ile çalışan bir çok dil bulunaktadır. C ve Perl bunlara örnek olarak verilebilir. Teknik olarak CGI'la aynı şekilde çalışmayan ancak aynı işlevi gören bir çok sistem bulunmaktadır. PHP, ASP de bunlara örnektir. Servet'ler de teknik olarak CGI programı olmamalarına rağmen yukarıda anlatılan sisteme göre çalışırlar. Ancak Servlet'lerin çalışması Applet'lerinkine de bir ölçüde benzemektedir. Applet'ler nasıl bir tarayıcı içerisinde çalışırlarsa, Servlet'ler de 'application server' denilen programlar içerisinde çalışırlar. Kullanıcı bir istek'te bulunduğunda application server ilgili servlet class'ını bulur ve yüklenmemişse yükler. Kullanıcın isteğini parametre'ler ve cookie'lerle birlikte servlet'e iletir. Servlet'in ürettiği HTML response'unu da alıp browser'a yollar. Bu sistemin kendisi gibi çalışan C ve Perl gibi dillere üstünlüğü vardır. (Java diliyle yazılmış olmalarınından.) C ve Perl'de her CGI modülü ayrı bir program olduğundan çok fazla server'ı ve işlemci'yi meşgul ederler ve memory'i harcarlar. Ama servlet'ler sadece ayrı thread'lerde çalışıtıklarından çok daha etkin kullanıma sahiptirler. Bir CGı modülü ile diğeri arasında veri alışverişi çok zordur (hatta bazen imkansız). Oysa servlet'ler aynı application server'ın içerisinde bulunduklarında çok kolay veri paylaşımı yapabiliriler. Bunlara ek olarak C'nin ünlü memory leak ve crash özelliği sayılabilir . Hehangi bir C programının yaptığı en küçük bir hatada bütün server çöker. Oysa servlet'ler application server'ın kontrolü altında oldukları için server'ı çökertme şeklinde bir 'güçleri' yoktur.

JSP (JavaServer Pages - Java Server Sayfaları)

CGI modüllerinde bütün HTML program tarafından üretilir. Bu, HTML sayfasının çok büyük ve çeşili style, image gibi bileşenlere dolu olaması durumunda bir sorun olabilmektedir. Hatta bazen bir sayfada sadece bir kaç satırlık işlem yapan programcı, bütün bir sayfayı tek tek üretmek durumunda kalabilmektedir. Bu hem programcı zamanı kaybı hem de çalışma güçlüğü yaratmaktadır. Servlet'lerde de durum aynıdır. Bu sorunu gidermek için PHP ve ASP gibi sistemlerin farklı bir yakşalımı vardır. HTML'in kod tarafından üretilmesi yerine, kod HTML'in içerine gömülür. Kodu HTML'den ayırmak için özel (<? ?> <% %> gibi) ayraçlar kullanılır. Server bu ayraçların dışındakileri dokunmadan HTML olarak client'a gönderir. Ayraçların içerisindekileri program olarak çalıştırır ve sonuç olarak ürettiği HMTL'i gönderir. Bu şekilde static HTML olarak hazırlanmış sayfaların içine bir kaç satır kod ekleyerek dynamic sayfalar üretilmiş olur. Bu süreç özellikle arayüzün programlama bilmeyen sayfa tasarımcıları tarafından yapıldığı ve tasarım yeteneği olmayan veya görsel arayüzle uğraşmak istemeyen programcıların çalıştığı ortamlarda çok yararlıdır. Java'nın da bu şekilde çalışmasını sağlayan sistem JSP (JavaServer Pages - Java Sunucu Sayfaları)'dır. ASP ve PHP'nin aksine, <% ve %> içerisine yazılan kod standart Java'dır. Özel bir syntax veya dil grameri yoktur. Java'da olan bütün kütüphanelere Servlet ve JSP'den de kullanılabilir.

İçindekilerGirişİndex
YukarıİlkÖnceki YokSonrakiSon
Geriİleri
Yazdır