Ana içeriğe atla

Servlet Nedir?

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.
HTTP_ClientServerSystem
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:


  1. Bir servlet instanceı yoksa, servlet container:
  2. Servlet sınıfını yükler.
  3. Servlet sınıfının bir instanceını oluşturur.
  4. initialize methodunu çağırarak servlet instansını hazırlar.
  5. Container service methodunu çağırır, request ve response nesnelerini parametre olarak verir.
  6. 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

Bu blogdaki popüler yayınlar

Örnek Algoritmalar ve Örnek C++ Kodları

Örneklerimize bu başlığımız altında devam ediyoruz arkadaşlar. :) Yıl başına kadar C++ hakkında bildiğim tüm konuları ve yaptığım projeleri sizlerle paylaşacağım. Sorularınızı yorumlarda bekliyorum. Şimdiden kolay gelsin :) Algoritma 5: Yarıçapı klavyeden girilen kürenin yüzey alanını ve hacmini açıklayan algoritmanın C++ kodunu yazınız.(π=3) #include <iostream> using namespace std; int main() { float r,alan,hacim; cout<<“Yaricapi giriniz:”; cin>>r; alan=4*3*r*r; hacim=(4*3*r*r*r)/3; cout<<“Alan:”<<alan<<endl; cout<<“Hacim”<<hacim<<endl; } Algoritma 6: Katsayıları klavyeden girilen birinci dereceden denklemin kökünü bulan algoritmanın C++ kodunu yazınız. #include <iostream> using namespace std; int main() { int a,b,c,x; cout<<“Katsayilari giriniz:”; cin>>a>>b>>c; x=(c-b)/a; cout<<“Kok:”<<x; } Algoritma 7:Klavyeden yarıçapı ve dilim açısı girilen daire diliminin

Java SE ve Java EE Nedir?

En çok merak edilen karıştırılan hengisinden başlasam acaba gibi bir sürü sorulara neden olan Java SE ve Java EE tanımlarından aralarındaki farklardan bahsetmek istiyorum. Önce Java SE'den başlayalım; Java SE açılımı Java Standart Edition olan Java programlama dilini kullanan bir yazılım geliştirme paketidir. Java SE ile daha çok küçük uygulamalar geliştirilir. Java SE ile geliştirilen uygulamalar, Windows,Linux ve Mac gibi bir çok işletim sisteminde sorunsuz çalışır. Java EE ise açılımı Java Enterprise Edition olan web üzerinde kurumsal online uygulamalar geliştirmek, dağıtmak için Java tabanlı bağımsız bir platformdur. Java EE, Java SE üzerine inşaa edildiği için içerisinde birçok Java SE bileşeni barındırır. Java EE'de çok katmanlı web tabanlı uygulamalar geliştirmek için bir çok API'ler ve protokoller bulunur. Java EE standartlaştırılmış yapısıyla uygulama gelişimini basitleştirir ve öğrenimini kolaylaştırmaktadır. Eğer kurumsal yapılar üzerinde çalışıyorsanız, Ja

C++ ile Veri Yapıları

Bu yazımızda, bilgisayar dünyasının temel yapı taşı olan veri yapısı konusunu ele alacağız. Bu konu oldukça zor olmakla birlikte, gayet önemli ve eğlenceli yapıdır. Veri yapısını bilmek ve etkin kullanmak, hayatınızda yapacağınız projelerde size kolaylık sağlayacaktır. Veri yapısı genel olarak bakıldığınında hayatımızın her anında vardır. Konular ilerledikçe bu daha iyi anlaşılacaktır. Veri yapısını tanımlamak gerekirse, bilgisayar ortamında verilerin etkin olarak saklanması ve işlenmesi için kullanılır. Veri yapıları, verilerin düzenlenme biçimini belirleyen yapıtaşlarıdır. Bir yazılım değişkeni bile basit bir veri yapısı olarak kabul edilebilir. Değişik algoritmalarda verilerin diziler, listeler, yığıtlar, kuyruklar, ağaçlar ve çizgeler gibi veri modellerine uydurularak düzenlenmesi gerekebilir. Veri, yapı ve algoritma bir yazılımın birbirinden ayrılmaz bileşenleridir. Algoritması hazırlanmış her yapı için verilerin düzenli bir şekilde kullanımı önemlidir. Çünkü yapı iyi kurul