Servletler - Yaşam Döngüsü

Bir servlet yaşam döngüsü, yaratılışından imhasına kadar tüm süreç olarak tanımlanabilir. Aşağıdakiler, bir sunucu uygulamasının izlediği yollardır.

  • Sunucu uygulaması, init() yöntem.

  • Servlet çağırır service() bir müşterinin talebini işleme yöntemi.

  • Sunucu uygulaması, destroy() yöntem.

  • Son olarak, sunucu uygulaması JVM'nin çöp toplayıcısı tarafından toplanan çöptür.

Şimdi yaşam döngüsü yöntemlerini ayrıntılı olarak tartışalım.

İnit () Yöntemi

İnit yöntemi yalnızca bir kez çağrılır. Yalnızca sunucu uygulaması oluşturulduğunda çağrılır ve daha sonra herhangi bir kullanıcı isteği için çağrılmaz. Bu nedenle, tıpkı uygulamaların init yönteminde olduğu gibi, tek seferlik başlatmalar için kullanılır.

Sunucu uygulaması normalde bir kullanıcı sunucu uygulamasına karşılık gelen bir URL'yi ilk kez çağırdığında oluşturulur, ancak sunucu uygulamasının sunucu ilk başlatıldığında yüklenmesini de belirtebilirsiniz.

Bir kullanıcı bir sunucu uygulamasını çağırdığında, her sunucu uygulamasının tek bir örneği oluşturulur ve her kullanıcı isteği, uygun şekilde doGet veya doPost'a devredilen yeni bir iş parçacığı ile sonuçlanır. İnit () yöntemi, sunucu uygulamasının ömrü boyunca kullanılacak bazı verileri basitçe oluşturur veya yükler.

İnit yöntemi tanımı şuna benzer -

public void init() throws ServletException {
   // Initialization code...
}

Service () Yöntemi

Service () yöntemi, gerçek görevi gerçekleştirmenin ana yöntemidir. Servlet konteyneri (yani web sunucusu), istemciden (tarayıcılar) gelen istekleri işlemek ve biçimlendirilmiş yanıtı istemciye geri yazmak için service () yöntemini çağırır.

Sunucu bir sunucu uygulaması için her istek aldığında, sunucu yeni bir iş parçacığı oluşturur ve hizmeti çağırır. Service () yöntemi, HTTP istek türünü (GET, POST, PUT, DELETE, vb.) Kontrol eder ve uygun şekilde doGet, doPost, doPut, doDelete, vb. Yöntemlerini çağırır.

İşte bu yöntemin imzası -

public void service(ServletRequest request, ServletResponse response) 
   throws ServletException, IOException {
}

Service () yöntemi kapsayıcı tarafından çağrılır ve hizmet yöntemi uygun şekilde doGet, doPost, doPut, doDelete, vb. Yöntemlerini çağırır. Yani service () yöntemiyle bir ilginiz yok ama istemciden aldığınız istek türüne bağlı olarak doGet () veya doPost () 'u geçersiz kılarsınız.

DoGet () ve doPost (), her hizmet isteğinde en sık kullanılan yöntemlerdir. İşte bu iki yöntemin imzası.

DoGet () Yöntemi

Bir GET isteği, bir URL için normal bir istekten veya METHOD belirtilmemiş bir HTML formundan kaynaklanır ve doGet () yöntemi ile işlenmelidir.

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

DoPost () Yöntemi

POST isteği, METHOD olarak POST'u özel olarak listeleyen bir HTML formundan kaynaklanır ve doPost () yöntemi tarafından işlenmelidir.

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

Destroy () Yöntemi

Destroy () yöntemi, sunucu uygulamasının yaşam döngüsünün sonunda yalnızca bir kez çağrılır. Bu yöntem, sunucu uygulamanıza veritabanı bağlantılarını kapatma, arka plan iş parçacıklarını durdurma, tanımlama bilgisi listeleri yazma veya diske vuruş sayıları yazma ve bu tür diğer temizleme etkinliklerini gerçekleştirme şansı verir.

Destroy () yöntemi çağrıldıktan sonra, sunucu uygulaması nesnesi çöp toplama için işaretlenir. Yok etme yöntemi tanımı şuna benzer -

public void destroy() {
   // Finalization code...
}

Mimari Diyagram

Aşağıdaki şekil, tipik bir sunucu uygulaması yaşam döngüsü senaryosunu göstermektedir.

  • Öncelikle sunucuya gelen HTTP istekleri servlet konteynerine delege edilir.

  • Sunucu uygulaması kapsayıcısı, service () yöntemini çağırmadan önce sunucu uygulamasını yükler.

  • Daha sonra sunucu uygulaması konteyneri, her bir iş parçacığı sunucu uygulamasının tek bir örneğinin service () yöntemini yürüten birden çok iş parçacığı oluşturarak birden çok isteği işler.