JSP Yaşam Döngüsü

jsp yaşam döngüsü

JSP Yaşam Döngüsü nedir?

JSP Yaşam Döngüsü, JSP Sayfasının servlet'e çevrilmesi olarak tanımlanır, çünkü bir JSP Sayfasının hizmet isteklerini işlemek için önce servlet'e dönüştürülmesi gerekir. Yaşam Döngüsü JSP'nin yaratılmasıyla başlar ve dağılmasıyla sona erer.

JSP Yaşam Döngüsünün Farklı Aşamaları

Tarayıcı bir JSP istediğinde, JSP motoru öncelikle sayfayı derlemesi gerekip gerekmediğini kontrol eder. JSP en son derlendiyse veya JSP'de son değişiklik yapıldıysa, JSP motoru sayfayı derler.

JSP sayfasının derlenme süreci üç adımdan oluşur:

  • JSP'nin ayrıştırılması
  • JSP'yi servlet'e dönüştürme
  • Servlet'in derlenmesi

JSP Yaşam Döngüsü Diyagramı

JSP Yaşam Döngüsü aşağıdaki şemada gösterilmektedir.

JSP Yaşam Döngüsü

Aşağıdaki adımlar JSP'nin yaşam döngüsünü açıklamaktadır:

  1. JSP sayfasının çevirisi
  2. JSP sayfasının derlenmesi(JSP sayfasının _jsp.java'ya derlenmesi)
  3. Sınıf yükleme (_jsp.java, _jsp.class sınıf dosyasına dönüştürülür)
  4. Örnekleme (Oluşturulan sunucu uygulamasının nesnesi oluşturulur)
  5. Başlatma(_jspinit() yöntem konteyner tarafından çağrılır)
  6. Talep İşleme(_jspservice() yöntem konteyner tarafından çağrılır)
  7. Tahrip etmek (_jspDestroy() kapsayıcı tarafından çağrılan yöntem)

Yukarıdaki noktalar hakkında daha ayrıntılı bir özet verelim:

1) JSP Sayfasının Çevirisi:

A Java servlet dosyası bir JSP kaynak dosyasından oluşturulur. Bu JSP yaşam döngüsünün ilk adımıdır. Çeviri aşamasında konteyner, JSP sayfasının ve etiket dosyalarının sözdizimsel doğruluğunu doğrular.

  • JSP konteyneri, bu JSP sayfasında kullanılan standart yönergeleri ve eylemleri ve etiket kitaplıklarına başvuran özel eylemleri yorumlar (hepsi JSP sayfasının bir parçasıdır ve sonraki bölümde ele alınacaktır).
  • Yukarıdaki resimli anlatımda ilk adımda demo.jsp, demo_jsp.java'ya çevrilmiştir.
  • Aşağıda gösterilen “demo.jsp” örneğini ele alalım:

Demo.jsp

<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>

Demo.jsp için Kod Açıklaması

Kod Satırı 1: html başlangıç ​​etiketi

Kod Satırı 2: Başlık etiketi

Kod Satırı 3 – 4: Başlık Etiketi yani Demo JSP ve kapanış head etiketi

Kod Satırı 5 – 6: Değişken demosunun başlatıldığı Scriptlet etiketi

Kod Satırı 7 – 8: Body etiketinde çıktıda yazdırılacak metin (Sayı: )

Kod Satırı 9: Demovar değişkeninin artan değerle yazdırılmaya çalışıldığı komut dosyası etiketi

Kod Satırı 10 – 11: Gövde ve HTML etiketleri kapatıldı

Demo JSP Sayfası aşağıdaki kodda demo_jsp servlet'e dönüştürülmüştür.

JSP Yaşam Döngüsü

Demo_jsp.java için kod açıklaması

Kod Satırı 1: Servlet sınıfı demo_jsp, HttpServlet ana sınıfını genişletiyor

Kod Satırı 2 – 3: Parametre olarak HttpServletRequest ve HttpServletResponse nesnelerine sahip jsp yani _jspservice'in hizmet yöntemini geçersiz kılma

Kod Satırı 4: Açma yöntemi

Kod Satırı 5: Yöntemin çağrılması getWriter() PrintWriterobject'i almak için yanıt nesnesinin sayısı (nesnelerin biçimlendirilmiş temsilini metin çıkış akışına yazdırır)

Kod Satırı 6: İçerik türünü ayarlamak için yanıt nesnesinin setContentType yönteminin çağrılması

Kod Satırı 7: Kullanma write() html'yi ayrıştırmaya çalışan PrintWriter nesnesinin yöntemi

Kod Satırı 8: Demovar değişkeni 0 olarak başlatılıyor

Kod Satırı 9: Arıyor write() metni ayrıştırmak için PrintWriter nesnesinin yöntemi

Kod Satırı 10: Arıyor print() Demovar değişkenini 0+1=1'den artırmak için PrintWriter nesnesinin yöntemi. Dolayısıyla çıktı 1 olacaktır.

Kod Satırı 11: Kullanma write() html'yi ayrıştırmaya çalışan PrintWriter nesnesinin yöntemi

Çıktı:

JSP Yaşam Döngüsü

  • Burada ekran görüntüsünde Çıkışın 1 olduğunu görebilirsiniz çünkü demvar 0 olarak başlatıldı ve ardından 0+1=1 olarak artırıldı

Yukarıdaki örnekte,

  • demo.jsp, bir değişkenin başlatıldığı ve artırıldığı bir JSP'dir. Bu JSP, servlet'e (demo_jsp.class) dönüştürülür; burada JSP motoru, JSP Sayfasını yükler ve servlet içeriğine dönüştürür.
  • Dönüşüm gerçekleştiğinde tüm şablon metni şuna dönüştürülür: println() açıklamalar ve hepsi JSP öğeleri dönüştürüldü Java kodu.

Basit bir JSP sayfasının servlet sınıfına çevrilmesi bu şekildedir.

2) JSP Sayfasının Derlenmesi

  • Oluşturulan Java servlet dosyası, Java servlet sınıfına derlenir.
  • Java kaynak sayfasının uygulama sınıfına çevrilmesi, JSP sayfasının kapsayıcıya konuşlandırılması ile JSP sayfasının işlenmesi arasında herhangi bir zamanda gerçekleşebilir.
  • Yukarıdaki resimli açıklamada demo_jsp.java, demo_jsp.class sınıf dosyasına derlenmiştir.

3) Sınıf yükleme

  • JSP kaynağından yüklenen Servlet sınıfı artık konteynere yüklendi

4) Örnekleme

  • Bu adımda nesne yani sınıfın örneği oluşturulur.
  • Konteyner, isteklere ve diğer olaylara yanıt olarak bu sınıfın bir veya daha fazla örneğini yönetir. Genellikle bir JSP kapsayıcısı, bir sunucu uygulaması kapsayıcısı kullanılarak oluşturulur. JSP konteyneri, hem JSP'yi hem de servlet'i desteklediği için servlet konteynerinin bir uzantısıdır.
  • Konteyner tarafından sağlanan bir JSPPage arayüzü şunları sağlar: init() ve destroy() yöntemleri.
  • HTTP isteklerine hizmet eden bir HttpJSPPage arayüzü vardır ve aynı zamanda servis yöntemini de içerir.

5) Başlatma

public void jspInit()
{
	//initializing the code
}
  • _jspinit() yöntemi, JSP'den oluşturulan servlet örneğini başlatacak ve bu aşamada konteyner tarafından çağrılacaktır.
  • Örnek oluşturulduktan hemen sonra init yöntemi çağrılacak
  • JSP yaşam döngüsü boyunca yalnızca bir kez çağrılır, başlatma yöntemi yukarıda gösterildiği gibi bildirilir.

6) Talep İşleme

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() yöntem, JSP sayfasının yaşam döngüsü boyunca ortaya çıkardığı tüm istekler için konteyner tarafından çağrılır.
  • Bu aşama için yukarıdaki aşamaların tümünden geçmesi gerekir ve ardından yalnızca servis yöntemi çağrılabilir.
  • İstek ve yanıt nesnelerini iletir
  • Bu yöntem geçersiz kılınamaz
  • Yöntem yukarıda gösterilmiştir: GET, POST vb. gibi tüm HTTP yöntemlerinin oluşturulmasından sorumludur.

7) Yok et

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() yöntem aynı zamanda konteyner tarafından da çağrılır
  • Bu yöntem, kapsayıcı, isteklere hizmet vermek için artık sunucu uygulaması örneğine ihtiyaç duymadığına karar verdiğinde çağrılır.
  • Bu durumda destroy metoduna çağrı yapıldığında servlet çöp toplama işlemine hazır hale gelir.
  • Bu yaşam döngüsünün sonudur.
  • Geçersiz kılabiliriz jspdestroy() Veritabanı bağlantılarını serbest bırakmak veya açık dosyaları kapatmak gibi herhangi bir temizleme işlemi gerçekleştirdiğimizde yöntem.