Bu yazımızda Servlet giriş yapacağız. Yani Java EE giriş için ilk adımlarımızı atmış olacağız. Ben bu konuda çok araştırma yaptım. Java EE nerden başlamalıyım? Hangi teknoloji hangi işe yarıyor? Bu sorularıma bulduğum cevaplar arasında geçen yazımda belirttiğim gibi hepsinin birbiri ile bağlantılı olması. Bir teknolojiyi anlayabilmek için diğer teknolojiye de hakim olmak gerekiyor. Teknolojileri birbirinin üzerine kat şeklinde düşündüğümüzde en alttaki konumun Servlet'e ait olduğunu söyleyebilirim. MVC yönünden bakacak olursa Servlet burada Controller işlevi görüyor denilebilir. Alta wikipedia tanımını ekleyip daha ayrıntılı incelemeye devam edelim.
Java Servlet, Java EE'de Java Servlet API'siyle uyumlu bir Java (programlama) sınıfı olup HTTP istemlerine cevap vermek için kullanılır.
Şimdi biraz kafa karıştı gibi sanki istek cevap http terimleri girince. O zaman web dünyasının çalışma prensibini inceleyip daha sonra servletin buradaki rolünü karşılaştıralım.
Şimdi düşünelim ki google girdik ve bir sayfayı açmak istedik. Örneğin bloguma girmek istediniz. Blog adresini adres çubuğuna yazdınız ve entera bastınız. Buradan tarayıcıya buradaki adrese girmek istediğinizi belirttiniz. Burada tarayıcıya ilgili adrese GET isteği yaptırmış oldunuz. Daha sonra tarayıcı URL'nin gösterdiği adresteki web sunucusu gelen isteği alır ve işler. Web sunucusu işlemin sonunca oluşan html sayfasının tarayıcıya gönderir. Tarayıcı gelen bu bilgiyi yorumlayarak size blogu açacaktır. Kısacası saniyelerle açılan sayfalar arasında böyle uzun adımlarla işlemler gerçekleşmektedir. Bu adımlar aslında Request-Response Model'in çalışma sistemini tanımlamaktadır. Tarayıcılar bu model üzerinden sunucularla haberleşerek web sayfalarını görüntüler.
Birazda web sitelerin tutulduğu web sunucularından bahsetmek istiyorum.
Web sunucuları, istemcinin ihtiyacına web sayfalarını browser(tarayıcı) gönderen yazılımlardır. İsteğin türüne göre html,xml,json vs türde dosya gönderirler. Bu dosyalar sunucuların dosya sisteminde saklanmaktadırlar. Sunucular dosya sistemlerindeki durağan içerikleri(static contents) direk okuyup göndrebilmektedirler. Static content için üzerinden dinamik değişiklik olmayan html sayfaları örnek verebiliriz. Bunlar her zaman aynı görünümde olacak ve üzerinden işlem yapılmayacak sayfalardır. Şimdi düşünüyor olmalısınız. Static içerik mi kaldı diye en basit web sitesi bile login işlemi yapıyorken, dinamik içeriklerle ilgili işlemlerimizi nasıl çözeceğiz? Burada yardımımıza programlama dilleri koşmaktadır. Programlama dilleri dinamik web sayfaları üretebilmek için kendi içlerinde farklı çözümler sunmaktadırlar. İşte Java'da bu noktada Servlet sınıflarını geliştirmiştir.
Aşağıya yazacağım tanımda http://www.dorukdestan.com'da servlet tutorial'da bulduğum tanımdır. Bu anlattıklarımı çok iyi sonuca bağlayan bir tanım olmuştur.
Servlet, request-response programlama modeliyle erişilen uygulamaları barındıran sunucuların yeteneklerini geliştirmek için kullanılan bir Java programlama dili sınıfıdır.
Peki ya Servlet nasıl çalışmaktadır?
Yukarıdaki tutorial bulduğum tanımda belirtildiği gibi Servlet, request-response programlama modeline göre çalışmaktadır. Bu modelin çalışma mantığını yukarıda bahsetmiştik. Görsel açıdan aşağıdaki resimlede desteklemek istiyorum.
Burada web server deyimi web sunucularını belirtmektedir. Servlet Container ise Servlet sınıflarını çalıştırmaya yarayan sunuculara verilen isimdir. Servlet Container olarak genelde Apache Tomcat kullanılmaktadır. Servlet Container'lar servlet'a gelen isteği işleyerek browsera cevap olarak gönderir. Servlet container bu işlevi yaptığı için metotları nesneleri çağıran bir main metodu gibi düşünebiliriz. Servlet container, main görevi görerek, sınıflardan nesneler oluşturmak ve o nesnelerin methodlarını çağırmak servlet containerın(sunucunun) görevidir.
Son olarak servlet'in yaşam döngüsünden bahsedip, servlet dünyasına girişi tamamlamak istiyorum. Artık daha içeriye girmenin vakti geldi. :)
Servlet Yaşam Döngüsü
(http://www.dorukdestan.com'dan alıntıdır.)
Servletin yaşam döngüsü deploy edildiği (yüklenildiği) servlet container tarafından denetlenir.
Bir istek bir servlete yönlendirildiği zaman, servlet container şu adımları yapar:
Diğer yazılarımızda görüşmek üzerine.
Kolaylıklar dilerim. :)
Java Servlet, Java EE'de Java Servlet API'siyle uyumlu bir Java (programlama) sınıfı olup HTTP istemlerine cevap vermek için kullanılır.
Şimdi biraz kafa karıştı gibi sanki istek cevap http terimleri girince. O zaman web dünyasının çalışma prensibini inceleyip daha sonra servletin buradaki rolünü karşılaştıralım.
Şimdi düşünelim ki google girdik ve bir sayfayı açmak istedik. Örneğin bloguma girmek istediniz. Blog adresini adres çubuğuna yazdınız ve entera bastınız. Buradan tarayıcıya buradaki adrese girmek istediğinizi belirttiniz. Burada tarayıcıya ilgili adrese GET isteği yaptırmış oldunuz. Daha sonra tarayıcı URL'nin gösterdiği adresteki web sunucusu gelen isteği alır ve işler. Web sunucusu işlemin sonunca oluşan html sayfasının tarayıcıya gönderir. Tarayıcı gelen bu bilgiyi yorumlayarak size blogu açacaktır. Kısacası saniyelerle açılan sayfalar arasında böyle uzun adımlarla işlemler gerçekleşmektedir. Bu adımlar aslında Request-Response Model'in çalışma sistemini tanımlamaktadır. Tarayıcılar bu model üzerinden sunucularla haberleşerek web sayfalarını görüntüler.
Birazda web sitelerin tutulduğu web sunucularından bahsetmek istiyorum.
Web sunucuları, istemcinin ihtiyacına web sayfalarını browser(tarayıcı) gönderen yazılımlardır. İsteğin türüne göre html,xml,json vs türde dosya gönderirler. Bu dosyalar sunucuların dosya sisteminde saklanmaktadırlar. Sunucular dosya sistemlerindeki durağan içerikleri(static contents) direk okuyup göndrebilmektedirler. Static content için üzerinden dinamik değişiklik olmayan html sayfaları örnek verebiliriz. Bunlar her zaman aynı görünümde olacak ve üzerinden işlem yapılmayacak sayfalardır. Şimdi düşünüyor olmalısınız. Static içerik mi kaldı diye en basit web sitesi bile login işlemi yapıyorken, dinamik içeriklerle ilgili işlemlerimizi nasıl çözeceğiz? Burada yardımımıza programlama dilleri koşmaktadır. Programlama dilleri dinamik web sayfaları üretebilmek için kendi içlerinde farklı çözümler sunmaktadırlar. İşte Java'da bu noktada Servlet sınıflarını geliştirmiştir.
Aşağıya yazacağım tanımda http://www.dorukdestan.com'da servlet tutorial'da bulduğum tanımdır. Bu anlattıklarımı çok iyi sonuca bağlayan bir tanım olmuştur.
Servlet, request-response programlama modeliyle erişilen uygulamaları barındıran sunucuların yeteneklerini geliştirmek için kullanılan bir Java programlama dili sınıfıdır.
Peki ya Servlet nasıl çalışmaktadır?
Yukarıdaki tutorial bulduğum tanımda belirtildiği gibi Servlet, request-response programlama modeline göre çalışmaktadır. Bu modelin çalışma mantığını yukarıda bahsetmiştik. Görsel açıdan aşağıdaki resimlede desteklemek istiyorum.
Burada web server deyimi web sunucularını belirtmektedir. Servlet Container ise Servlet sınıflarını çalıştırmaya yarayan sunuculara verilen isimdir. Servlet Container olarak genelde Apache Tomcat kullanılmaktadır. Servlet Container'lar servlet'a gelen isteği işleyerek browsera cevap olarak gönderir. Servlet container bu işlevi yaptığı için metotları nesneleri çağıran bir main metodu gibi düşünebiliriz. Servlet container, main görevi görerek, sınıflardan nesneler oluşturmak ve o nesnelerin methodlarını çağırmak servlet containerın(sunucunun) görevidir.
Son olarak servlet'in yaşam döngüsünden bahsedip, servlet dünyasına girişi tamamlamak istiyorum. Artık daha içeriye girmenin vakti geldi. :)
Servlet Yaşam Döngüsü
(http://www.dorukdestan.com'dan alıntıdır.)
Servletin yaşam döngüsü deploy edildiği (yüklenildiği) servlet container tarafından denetlenir.
Bir istek bir servlete yönlendirildiği zaman, servlet container şu adımları yapar:
- Bir servlet instanceı yoksa, servlet container:
- Servlet sınıfını yükler.
- Servlet sınıfının bir instanceını oluşturur.
- initialize methodunu çağırarak servlet instansını hazırlar.
- Container service methodunu çağırır, request ve response nesnelerini parametre olarak verir.
- Container destroy methodunu çağırır ve ardından servleti sonlandırır. (servlet container hafızada yer açmak isteyince veya container kendisi de kapanıyorken)
Diğer yazılarımızda görüşmek üzerine.
Kolaylıklar dilerim. :)
Yorumlar
Yorum Gönder