Java'da Servlet Yaşam Döngüsü: Yöntemler, Mimari, Karşılaştırma ve Kurulum

Yayınlanan: 2021-03-03

İçindekiler

Tanıtım

Servlet'ler, yalnızca bileşen tabanlı ve platformdan bağımsız değil, aynı zamanda web tabanlı uygulamalar oluşturmak için çok destekleyici bir yöntem sağlar. Sunucu uygulamalarının veritabanlarına erişmek için Java API'lerine ve JDBC API'sine erişimi vardır. Java Servlet'leri durumunda, CGI (Common Gateway Interface) programının performansı açısından herhangi bir kısıtlama olmamasına rağmen, yine de bazı dezavantajlar mevcuttur.

Servlet nedir?

Servlet, dinamik web sayfaları oluşturmak için çok faydalı bir teknolojidir. Web tarayıcısı ile HTTP istemcileri veya sunucuları arasında bir ara katman görevi görür. Servletler yardımıyla önce kullanıcılardan gelen girdileri topluyor ve ardından dinamik olarak web sayfaları oluşturuyoruz. Servlet, sunucuların ve ana bilgisayar uygulamalarının yeteneklerini genişletir. Servlet'ler, sunucuların yeteneklerini genişletir ve ayrıca kullanıcılar için her türlü isteğe yanıt verir.

Kaynak

CGI vs Servlet'ler

Servlet'lerden önce, CGI yaygın olarak kullanıldı. CGI, kullanıcıdan alınan talebi bir uygulama programına iletmenin bir yoludur. CGI bir web sunucusu için bir yol olmasına rağmen, aynı zamanda tarayıcıdan (istemci) yanıt alır. Kullanıcı tarayıcıya bir web sayfası istediğinde, sunucu bunu onlara geri gönderir.

Bir müşteri bir web sayfasındaki bir formu doldurup tekrar göndermeyi denediğinde, uygulama programı tarafından işlenir. Sunucu, bilgileri küçük bir web uygulama programına iletir. Bu program önce verileri işler ve ardından bir onay mesajı ile geri gönderir.

Kısaca Servlet Yaşam Döngüsü Yöntemleri

Bir sunucu uygulamasının temel olarak şu şekilde tanımlayabileceğimiz üç yaşam döngüsü yöntemi vardır:

  1. içinde()
  2. hizmet()
  3. tahrip etmek()

Kaynak

Servlet Mimarisi

  • İlk olarak, istemciler tarafından gönderilen verileri okur. Ardından, bir web sayfasına bir HTML formu ekler ve ardından istemciler tarafından gönderilen istekleri gönderir.
  • Bundan sonra, sunucu uygulaması verileri işler ve web hizmetlerini çağırarak RMI'yi yürüten bir veritabanı yönetim sistemine bağlanır.
  • İşlendikten sonra belgeler metin ve gif formatlarında gönderilebilir.
  • Son olarak, HTTP'yi istemciye gönderir.

Kaynak

Şimdi bu yöntemleri ayrıntılı olarak tartışacağız

1. başlangıç()

init() yöntemi, sunucu uygulaması örneği oluşturulduktan sonra yalnızca bir kez çağrılır. İlk başta, sunucu uygulamasını başlatır. Servlet.init(), sunucu uygulaması örneğinin başarıyla oluşturulduğunu gösterir.

init() yönteminin sözdizimi şu şekilde verilir:

public void init(ServletConfig config) ServletException {'i atar

//başlatma kodu

}

2. hizmet()

Sunucu uygulaması isteği aldığında, web kapsayıcısı service() yöntemini çağırır.

  • İstenen verileri toplamak için b
  • y istemci, hizmet isteği nesnesi kullanılır.
  • Çıktı içeriğini oluşturmak için ServletResponse nesnesi kullanılır.

Service() yönteminin imzası şu şekilde verilir:

genel geçersiz hizmet (ServletRequest isteği, ServletREsponse yanıtı)

ServletEXception , IOException {'yi atar

// istek işleme kodu

}

service() yöntemi, doGet, doPost, doPut, doDelete ve diğer birçok yöntemi kullanır.

3. yok et()

Kullanıcı , bir sunucu uygulamasının yaşam döngüsünde en az bir kez destroy() yöntemini çağırır . Veritabanı bağlantısını sonlandırmak, ayrılan belleği ve kaynakları serbest bırakmak için kullanılır. Ayrıca temizleme amaçlarına da yardımcı olur ve çöp toplama bununla ilişkilidir.

destroy() yönteminin imzası şudur:

public void destroy(){

// Sonlandırma kodu

}

Ayrıca Okuyun: Servlet vs JSP

Bir Servlet'in Ortam Kurulumu

Bir Servlet uygulaması oluşturmak için, ilk olarak, aşağıda açıklanan Tomcat Server'ı kurmak gibi bazı adımları izlememiz gerekiyor.

1. Bir Dizin Yapısı Oluşturma

Kaynak

İlk olarak, yukarıdaki dizin yapısını Apache – Tomcat\webapps dizini adlı bir dizinde oluşturmamız gerekiyor. Tüm HTML'yi, statik dosyaları, görüntüleri bir klasör oluşturarak web uygulaması altında tutmamız gerekiyor. Sunucu uygulamaları sınıf klasöründe tutulmalıdır. Son olarak web.xml dosyası WEB-INF klasörünün altında olmalıdır.

2. Bir Servlet Oluşturma

Bir sunucu uygulaması oluşturmanın üç farklı yolu vardır.

  1. Servlet arayüzünü uygulayarak.
  2. GenericServlet sınıfını genişleterek.
  3. HTTP sunucu uygulaması sınıfını genişletmek gerekir.

HttpServlet soyut sınıfını genişletebilirsek, esas olarak bir sunucu uygulaması oluşturulabilir.

3. Servlet'i Derlemek

Sunucu uygulamasını derlemek için bir JAR dosyası gereklidir –

  1. Sınıf yolunu ayarlayarak.
  2. Kavanozu JRE/lib/ext klasörüne yapıştırarak.

4. Dağıtım Tanımlayıcısı Oluşturun

DD, web tabanlı sunucular tarafından kullanılan bir XML dosyası olarak tanımlanabilir.

servlet'leri kolaylıkla çalıştırabilirler. DD birkaç önemli amaç için kullanılır.

  1. URL'yi Servlet sınıfına eşleyerek.
  2. Parametreleri başlatarak.
  3. Hata sayfasını tanımlayarak.
  4. Güvenlik rollerine göre.
  5. Etiket kitaplıkları bildirerek.

5. Sunucuyu Başlatın

Apache Tomcat sunucusunu başlatmak için apache-tomcat/bin dizini altındaki startup.bat dosyasına çift tıklamamız gerekiyor ve çalışmaya başlayacak.

6. Tomcat Sunucusunu İlk Kez Başlatma

Tomcat Server'ı ilk kez başlatmak için, Environment değişkeninde JAVA_HOME ayarlamamız gerekiyor. Aşağıdaki adımlar aşağıda belirtilmiştir. Bilgisayarım'a sağ tıklayın ve Özellikler'e gitmemiz gerekiyor .

Kaynak

  1. Ardından Gelişmiş Sekmesine gideceğiz ve Ortam Değişkenleri düğmesine tıklamamız gerekiyor .

Kaynak

  1. Bu nedenle New butonuna tıklayıp Variable name metin alanına JAVA_HOME , Variable value metin alanına da JDK yolunu gireceğiz . Ardından OK diyerek kaydetmemiz gerekiyor.

Kaynak

7. Servlet Uygulamasını Çalıştırma

Servlet butonunu çalıştırdığımızda şöyle görünecek -

Tarayıcıyı açtıktan sonra http:localhost:8080/First/hello yazmamız gerekiyor.

Ödeme: Hindistan'da Java Geliştirici Maaşı

Servlet İstek Arayüzü

ServletRequest, istemciye bir sunucu uygulaması hakkında özgün bilgi parçaları sağlamayı amaçlar.

içerik türü, uzunluk, parametre değerleri ve daha fazlasını içerir.

yöntemler

1. getAttribute(Dize)

Özniteliklerin varlığı yoksa, özniteliklerin değerini istendiği gibi döndürür

sonra NULL döndürür.

2. getAttributeNames()

İstemciler tarafından istenen mevcut özniteliklerin adlarını döndürür.

3. getCharacterEncoding()

Bir dizi karakter döndürür.

4. getContentLength()

İstenen veri varlığı boyutunu döndürür .

5. getContentType()

İlk başta, nesnenin kimliğini ister. Bulunamazsa, NULL değeri döndürür.

6. getInputStream()

İstemci tarafından alınan ikili bir veri akışı döndürür ve ardından dizeleri döndürür.

7. getParameter(Dize)

Parametrelerin bir dizesini döndürür.

8. getParameterNames()

Parametre adlarını döndürür.

9. getParameterValues(Dize)

Parametrelerin değerlerini döndürür. Her zaman bir dize şeklinde bulunurlar.

10. getProtocol()

Protokolü ve sürümü <protokol>/<ana sürüm>.<küçük sürüm> biçiminde döndürür.

11. getOkuyucu()

İstek gövdesindeki metni okumak için arabelleğe alınmış bir okuyucu döndürür.

12. getRealPath(Dize)

sanal yoldan kaçınır ve gerçek yolu döndürür.

13. getRemoteAddr()

IP adresini döndürür.

14. getRemoteHost()

Aracının tamamen yapılandırılmış ana bilgisayar adını döndürür.

15. getScheme()

İstekte kullanılan URL'yi döndürür.

16. getSunucuAdı()

Sunucunun ana bilgisayar adını döndürür.

17. getServerPort()

Port numarasını döndürür.

18. setAttribute(Dize, Nesne)

Bu yöntem, her türlü istek için bir öznitelik biriktirir.

Sunucu Uygulaması Yanıtı

ServletResponse bir nesneyi çağırır ve çeşitli kullanıcıların yanıtı kaydedilir. Web kapsayıcı tüm bu faaliyetlerden sorumludur. Bunu yaratma adımı çok önemlidir. Adım, bir nesne oluşturmaktır.

Şimdi aşağıda ServletConfig ve ServletContext hakkında detaylı olarak konuşalım.

ServletConfig

1. Web kabı, başlatma parametrelerine dayalı olarak yapılandırma nesnesini oluşturur.

2. Servlet başına bir ServletConfig mevcut olmalıdır.

yöntemler

1. Eşittir(Nesne)

geçerli nesnenin verilen nesne ile eşit değere sahip olup olmadığını kontrol eder.

2. GetHashCode()

Varsayılan karma işlevi olarak çalışır.

3. GetType()

Geçerli örneğin Türünü döndürür.

4. MemberwiseClone()

Bu nesneyi çağırırsak, sığ bir kopya oluşturulabilir. Varsayılan olarak mevcut nesneye atıfta bulunur .

5. ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

ServletContext

ServletContext'i aşağıda tartışalım:

  1. Referans nesnesini web uygulamasının her bir Servlet'i için erişilebilir kılmak çok önemlidir.
  2. Referans nesnesi aslında bunların çalışma zamanı uygulamasıdır.

İki tür sunucu uygulaması şu şekilde tanımlanabilir:

1. Genel Servlet'ler

Generic servlet'lere protokollerden bağımsız olarak atıfta bulunuyoruz ve ayrıca override ederek onu çağırmak gerekiyor. Genel sunucu uygulamalarını üç şekilde çağırabiliriz –

  • HTML Dosyası

WebContent/index.html gibi görünebilen çok karmaşık olmayan bir HTML dosyası oluşturabiliriz.

  • Java Sınıfı Dosyası

GenericServlet sınıfı genişletilerek genel bir sunucu uygulaması oluşturulabilir. Basit bir yeni sınıf dosyası oluşturabilirsek, onu genel olarak yeniden adlandırabiliriz. Dosya yolu şuna benzer:/javaResouces/src/default package/generic.java.

  • XML Dosyası

Bu dosyayı WebContent/WEB-INF/web.xml yolunda bulabiliriz. Sunucu uygulamasını belirli bir URL ile eşleştirebiliriz.

2. HTTP sunucu uygulaması

Bu tür sunucu uygulamaları, Servlet sınıflarının bir uzantısından başka bir şey değildir. HTTP'ye bağımlı olmasına rağmen, web tarayıcısının ve sunucuların iletişim kurmasına yardımcı olan bazı kurallar belirler ve HTTP sunucu uygulaması ayrıca doGet() veya doPost() yöntemlerini geçersiz kılabilir. Ayrıca, her iki yöntemi de geçersiz kılabilir.

Servlet'lerin Avantajları

Şimdi sunucu uygulamalarının bazı avantajlarını görelim –

  1. Performans olağanüstü.
  2. Sunucu uygulamaları, bir sunucunun adres alanı içinde yürütülebilir. Sonuç olarak istemci isteğini işlemek için ayrı bir adres alanı oluşturmanın gereksiz olduğunu söyleyebiliriz.
  3. Platformdan bağımsızdırlar ve çoğunlukla bileşen tabanlıdırlar.
  4. Güvenlik yöneticisi kaynakları ve verileri korumak için bazı kısıtlamalar belirlediğinden sunucu uygulamaları güvenli hale gelir.
  5. Çalışırken, kullanıcıların bir çöp ayırma tekniği olarak belleği boşaltma konusunda endişelenmelerine gerek yoktur.
  6. Servlet'ler, tüm kütüphaneler mevcut olduğu için tam işlevsellik sağlar. Uygulamalar ve diğer mekanizmalarla kolayca iletişim kurabilir.

Kaynak

Servletlerin Dezavantajları

Sunucu uygulamalarının sınırlamaları şu şekilde tartışılmaktadır:

  1. JVM'ye aynı anda yalnızca bir sunucu uygulaması yüklenebilir. Yani talep sayısının önemli olduğunu söyleyebiliriz.
  2. Bir istek olduğunda, yalnızca bir iş parçacığı olabilir. Orada hiçbir süreç mevcut olmamalıdır.
  3. Bir sunucu uygulaması tasarlamak maliyetlidir ve bazen oldukça sorunludur.
  4. Servletleri çalıştırmak için sunucu üzerinde JRE (Java Runtime Environment) gibi tarayıcıda başka kurulumlara ihtiyacımız var.

Ayrıca Okuyun: Java Projesi Fikirleri ve Konuları

Dünyanın En İyi Üniversitelerinden Online Yazılım Kursları Öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Çözüm

Dijital dünyanın bu modern çağında, teknoloji ve internet herkesin itici gücü haline geldi. İnternet huzursuz. Her saniye, büyük miktarda veriyi aktarmakla meşgul.

Ancak verilerin toplu aktarımı nedeniyle, hıza da ihtiyacımız olduğu için internet yavaşlıyor. Böylece dinamik siteler yazılım geliştiriciler tarafından oluşturulur. Bu siteler her an değişmekte ve güncellenmektedir. Java ve geliştirmedeki Servlet'ler hakkında daha fazla bilgi edinmek için upGrad'ın Tam Yığın Yazılım Geliştirmede Yönetici PG Programına göz atın ve yolculuğunuza başlayın.

Bu makalenin temel amacı, okuyuculara servletler hakkında temel bir fikir edinmeleri için temel bir servlet kavramı sunmaktır.

Hayalinizdeki İşe Yer Açın

Tam Yığın Geliştirmede Executive PG Programına Şimdi Başvur