Java Web teknolojisinin temelini anlamak için Java Servlet kavramını inceleyeceğiz. Java Servlet kavramı Java EE tarafında sıkça kullanılıyor. Çünkü projelerin neredeyse tamamı web platformları üzerinde. Peki, nedir bu Java Servlet?
Servlet Nedir?
Servletler, bir Web veya uygulama sunucusu üzerinde çalışan ve bir Web tarayıcısından veya başka bir HTTP istemcisinden gelen istekler ile HTTP sunucusu üzerindeki veritabanları veya uygulamalar arasında orta bir katman gibi davranan programlardır. (Çok karmaşık gelmiş olabilir bu tanım, şekil ile açıklayalım 🙂 )
Servlet, dinamik bir web uygulaması oluşturmak için sunucu (server) üzerinde uygulamayı çalıştıran bir web bileşenidir. Servlet bir Java sınıfıdır.
Servlet Kullanmanın Avantajları Nelerdir?
- Daha iyi bir performans sağlar.
- Servletler, her istemci (client) isteğini karşılamak için ayrı bir işlem (process) oluşturmaya ihtiyaç duymaz.
- Javada yazıldığı için Servetler platform bağımsızdır.
- Sunucu üzerindeki Java güvenlik yöneticisi, bir sunucu makinesindeki kaynakları korumak için bir dizi kısıtlama uygular. Bu yüzden servletler güvenilirdir.
- Java sınıfı kütüphaneleri tam fonksiyonelliği bir servlet tarafından kullanılabilir. Yani database, grafiksel arayüz (applet) vb. sınıflar ile iletişim kurabilir.
Servletlerin Yapabilecekleri
- İstemciler (clients) / Tarayıcılar tarafından gönderilen açık (explicit) verileri okuyun. Bir web sayfası üzerindeki form verileri veya bir arayüz (applet) üzerinden gelen veriler.
- İstemciler (clients) / Tarayıcılar tarafından gönderilen kapalı (implicit) HTTP istek verilerini okuyun. Bu istekler tarayıcının anladığı çerezleri, medya türlerini ve sıkıştırma şemalarını içerir.
- Verileri işleyin ve sonuçları oluşturun. Bu aşamada veritabanı ile bağlantı kurmanız gerekebilir.
- İstemcilere (clients) / Tarayıcılara açık veriler gönderin. HTML, XML, .gif ve EXCEL gibi
- İstemcilere (clients) / Tarayıcılara kapalı HTTP yanıtları gönderin. (Çerezler (cookies) ve cache paratmeleri gibi)
Servetler, büyük ölçekli geliştirme projelerini destekleyen Java sınıf kütüphanelerinin genişletilmiş bir versiyonu olan Java Enterprise Edition’un (Kurumsal Sürüm) standart bir parçası olan javax.servlet ve javax.servlet.http paketleri kullanılarak oluşturulabilir.
Servlet Yaşam Döngüsü
- Servlet, init() metotu çağrılarak başlatılır (initialize).
- Servlet, bir istemcinin isteğini işlemek için service() metotunu çağırır.
- Servlet, destroy() metotu çağrılarak sonlanır (terminate).
- Sonunda, servlet Java Sanal Makinesinin (JVM) çöp toplayıcısı (garbage collector) tarafından toplanan çöptür.
init() Metotu
init() moetotu sadece bir kez çağrılır. Sadece servlet oluşturulduğunda init() metotu çağrılır ve daha sonra herhangi bir kullanıcı istekleri için çağrılmaz.
Servlet normalde bir kullanıcı servlet’e karşılık gelen bir URL’i ilk kez çağırdığında oluşturulur ancak, sunucu ilk başlatıldığında servlet yüklenmesini dahi belirtebilirsiniz.
init() metot imzası:
public void init() throws ServletException {
// Initialization code...
}
service() Metotu
Service metotu, asıl görevleri gerçekleştirmek için ana metottur. Servlet konteyneri, istemciden(tarayıcılardan) genlen istekleri karşılamak ve istemciye yanıt dönmek için service() metotunu çağırır.
Service metotu, HTTP istek tipini (GET, POST, PUT, DELETE vb.) kontrol eder ve doGet, doPost, doPut, doDelete gibi metotları uygun şekilde çağırır.
service metot imzası:
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
}
doGet() Metotu
Bir GET isteği, normal bir URL isteğinden veya tanımlanmış metotu olmayan bir HTML formundan kaynaklanır ve doGet() metotu tarafından karşılanmalıdır.
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}
doPost() Metotu
Bir POST isteği, metot olarak POST alan bir HTML formundan kaynaklanır ve doPost() metotu tarafından karşılanmalıdır.
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}
destroy() Metotu
Destroy metotu, servletin yaşam döngüsünün en sonunda sadece bir kez çağrılır. Bu metot, veritabanı bağlantılarını kapatmak, arka plandaki threadleri durdurmak vb. işleri yapmak için servlet’e bir şans verir.
Destroy metotu çağrıldıktan sonra, servlet nesnesi çöp toplama (garbage collection) için işaretlenir.
destroy metotu tanımlaması:
public void destroy() {
// Finalization code...
}
- İrlanda Öğrenci Vizesi için Gerekli Belgeler
- (Solved) Error ‘npm ERR! ERESOLVE unable to resolve dependency tree’ and & How to fix NPM warnings
- Mikroservis Mimarisi Nedir? Monolitik Mimari Nedir? Microservice vs Monolithic
- Metaverse nedir? Metaverse teknolojisi hayatımızda neleri değiştirecek?
- Keycloak Kullanarak Güvenli Java Spring Boot REST API Uygulaması
Yararlandığım Kaynaklar
https://www.tutorialspoint.com/servlets/index.htm
https://docs.oracle.com/javaee/7/api/javax/servlet/Servlet.html