Mehmet Ethem SULAN :: Servlet ve JSP(Java Server Pages) :: Java Servlet nedir ve nasıl çalışır

Servlet dinamik web uygulaması gerçekleştirmeyi sağlayan bir teknolojidir(örn: göndrilen veriye göre sonuç üretme). Web sunucusu üzerinde çalışır ve gönderilen veriye göre sonuç üreten java sınıflardıdır.Kullanıcı ulaşmak istediği sayfayı belirtip bilgiyi sonucuya gönderir.Web sunucu gelen bu isteği(request) alıp bu isteğe uygun olan servete ait nesne varsa istek servete gönderilir.Eğer istenilen(gönderilen bilgiyle uyuşan) nesne bellekte yoksa üretilip istek ve bilgi servete gönderilir.Servlet kendisine gelen bu istek doğrultusunda bir sonuç üretip(örn:html sayfası formatında) web sunucusuna gönderir.Web suncuda servletten gelen bu değeri isteği yapan kullanıcıya gönderir.Fakrlı sonuçlar için farklı servlet sınıfları üretilmeli(örn:HttpServlet).Servlet makinesi web sunucuda servlet ve javanın nasıl kullanıldığını bilir ve sunucuda bulunmalıdır.Bu makine servletleri JVM(Java virtual machine) ile çalıştırılabilir ve sonuçları kullanıcıya gönderilebilir.Web suncusu ve servlet makinesi içeren bir çok  sunucu vardır.En çok bilinen Apache Tomcat, Macromedya Jrun,Oracle for java..
Aynı servete birden fazla istek aynı anda gelince suncu bu servlet sınıfndan tek bir nesne üreterip bu nesneyi iş parçacığı(multi thread) ile tüm isteklere cevap verebilir.Bu arada javada çoklu süreç(multi process) yok.Çünkü JRE bir süreçtir ve aynı anda birden fazla süreç çalıştırılamaz.Bunun için tek süreç ile çoklu iş parçacığı ile bir çok işlem aynı anda gerçekleştirilebiliyor.Sunucya istek gelir.Sunucu bu isteğe ait servleti belleğe yükler.Servlete ait init() metodu(yapıcı gibi) sonra da service() metodu(gelen isteğe göre kendisindeki bazı metodları çalıştırıp bu işi gerçekleştirir) çalıştırılıp bir sonuç üretilip sunucya o da isteği yapana gönderir.Istek birden fazlaysa thread ile gerçekleştirilir.En sonda da destroy() metodu(javada çöp toplayıcı gibi) çalıştırılır.Örneğin ben bir fabrika müdüründen bir araba isteğinde bulunurum.Müdür o arabayı yapacak gruba isteği iletir Eğer istediğim tipte araba üreten grup(çalışan) yoksa yeni bir çalışma grubu oluşturulup araba üretilir.Müdür de bu arabayı bana gönderir.Burada kullanıcı benim, fabrika müdürü sunucu ve çalışanalrda servlettir.

HttpServlet get,post,delete… gibi isteklere cevap verir.Buna ait metodlar doGet()—>get isteği, doPost()—>post isteklrini gerçekleştirir.HttpServletRequest—>Kullanıcıdan gelen değişken,veri bilgileri bu değişkende tutulur.HttpServletResponse—>işi gerçekleştiren ve sonucu kullanıcıya göndermek için kullanılır.
Servlet jspden önce de vardı.Jsp görsel içerikli uygulamaların geliştirmesinde kullanım rahatlığı sağlamak için doğmuştur.Aslında servlet ve jsp aynı işleri gerçekleştirebiliyorlar.Jsp servlet üzerine doğan bir teknoloji olduğundan arka planda çalışan mekanizma servletlere dayanır.CGI(servlet de CGI da html içerikleri satır satır yazdırmak zor ve kullanışsızdır.JSP bu servletteki eksikliği gidermiştir) programları web sunucularda her istek için ayrı ve yeni bir süreç oluşturduklarından web sunucuların aynı anda sınırlı ziyarteçiye hizmet verbiliyordu.Bu sorunu ortadan kaldırmak için çalıştıkları sunucuda her bir istek sistemde hazır bulunan JVM tarafından java başlatılan java threadiyle isteği ele alıp işleyebiliyor.Bu thread ile aynı anda birden fazla isteğe cevap verilebildiğinden sunucu belleğine ek yük getirmezler.Bundan dolayıdır ki bir sevlette meydana gelen hata diğer servletleri etkilemediği gibi sunucunun çalışmasını da etkilemez.JSP dosyaları istek anında sunucuda bulunan jsp motoru karşılığı olan servlet dosyasına çevrilir.Derlenen servlet(.jsp dosya derlenince .java yanı o jsp ye karşılık gelen servlete dönüştürülür.) çalıştırıarak sonuç html çıktısı olarak ziyaretçiye iletilir.

Comments

There are 4 comments for this post.

  1. naz on Temmuz 12, 2010 8:03 am

    güzel

  2. ethemsulan on Temmuz 13, 2010 10:16 pm

    Teşekküler

  3. Mehmet Ethem SULAN :: Hibernate JSF(Java Server Faces) :: JSF(Java Server Faces) Hibernate Framework Example on Aralık 5, 2010 9:52 pm

    […] Burada fazla detaya girmeden Java web, istemci taraflı applet, sunucu tabanlı teknolojiler ise Servlet, daha sonra html web sayfaları içine eklemesiyle JSP ve JSF şeklinde teknolojileri […]

  4. kne on Nisan 23, 2011 8:35 pm

    tşk

Write a Comment

Let me know what you think?