JSP Yaşam Döngüsü: Aşamalar ve Şema Açıklaması
⚡ Akıllı Özet
JSP Yaşam Döngüsü, bir konteynerin bir sayfayı nasıl bir servlete dönüştürdüğünü, derlediğini, sınıfı yüklediğini, bir örnek oluşturduğunu, onu başlattığını, oluşturulan servis metodu aracılığıyla her isteğe hizmet verdiğini ve son olarak onu yok ettiğini açıklar.

JSP Yaşam Döngüsü Nedir?
JSP Yaşam Döngüsü Bir JSP sayfasının bir servlete dönüştürülmesi olarak tanımlanır, çünkü bir JSP sayfası hizmet isteklerini işleyebilmesi için önce bir servlete dönüştürülmelidir. Yaşam döngüsü, JSP'nin oluşturulmasıyla başlar ve ondan türetilen servlet örneğinin yok edilmesiyle sona erer.
Oluşturulan sınıf sıradan bir servlet olduğundan, servlet hakkında zaten bildiğiniz her şey geçerlidir.tracBu durum hala geçerli. Java Konteynerin yazdığı kod aslında çalışan koddur; JSP dosyası yalnızca sizin bakımını yaptığınız kaynak koddur.
JSP Yaşam Döngüsünün Farklı Aşamaları
Tarayıcı bir JSP dosyası istediğinde, JSP motoru öncelikle sayfanın derlenmesi gerekip gerekmediğini kontrol eder. Eğer JSP dosyası daha önce hiç derlenmemişse veya son derlemeden bu yana değiştirilmişse, JSP motoru sayfayı derler.
Bir JSP sayfasının derleme 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ı
Aşağıdaki diyagramda JSP yaşam döngüsü gösterilmektedir. tracBu, kaynak dosyadan konteynerin çalıştırdığı sınıfa kadar tek bir sayfadır.
Aşağıdaki adımlar JSP'nin yaşam döngüsünü açıklamaktadır:
- JSP sayfasının çevirisi
- JSP sayfasının derlenmesi (JSP sayfasının _jsp.java dosyasına derlenmesi)
- Sınıf yükleme (_jsp.java dosyası _jsp.class sınıf dosyasına dönüştürülür)
- Örnek oluşturma (oluşturulan servlet'in bir nesnesi oluşturulur)
- Başlatma (jspInit() metodu konteyner tarafından çağrılır)
- İstek İşleme (_jspService() metodu kapsayıcı tarafından çağrılır)
- Yok et (jspDestroy() yöntemi kapsayıcı tarafından çağrılır)
JSP Yaşam Döngüsünün Aşamaları Açıklandı
Şimdi yukarıdaki maddelerin her birini daha detaylı inceleyelim.
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 kapsayıcısı, standart yönergeleri ve eylemleri ve etiket kitaplıklarına referans veren özel eylemleri yorumlar (bunların hepsi JSP sayfasının bir parçasıdır ve aşağıdaki bölümde ele alınmıştır). JSP öğeleri Bu JSP sayfasında kullanılan (eğitim amaçlı) metin.
- Yukarıdaki görsel açıklamada, demo.jsp dosyası ilk adımda demo_jsp.java dosyasına dönüştürülmüştür.
Aşağıda gösterildiği gibi “demo.jsp” dosyasını örnek olarak ele alalım:
Demo.jsp
<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>
Yukarıdaki ilanla ilgili not: Aşağıda yer alan oluşturulmuş servlet ekran görüntüsüyle birebir eşleşecek şekilde, yayınlandığı haliyle aynen yeniden üretilmiştir. İçindeki iki yazım hatası, birebir kopyalanırsa derlenmeyecektir — değişken şu şekilde tanımlanmıştır: demvar ama basılı olarak demovarve örtük çıktı nesnesi şudur: out küçük harflerle değil OutSayfayı çalıştırmadan önce her ikisini de düzeltin.
Code Demo.jsp için açıklama
Code Satır 1: HTML başlangıç etiketi
Code Satır 2: Başlık etiketi
Code 3-4. satırlar: Başlık etiketi (örneğin Demo JSP) ve kapanış head etiketi.
Code Satır 5-6: demo değişkeninin başlatıldığı Scriptlet etiketi.
Code 7-8. satırlar: `<body>` etiketinde, çıktıda yazdırılacak metin (Sayı: )
Code Satır 9: Değişken demovar'ı artırılmış değeriyle birlikte yazdırmaya çalıştığımız Scriptlet etiketi.
Code Satır 10 – 11: Body ve HTML etiketleri kapatıldı
Demo JSP sayfası, aşağıdaki kodda gösterilen demo_jsp servlet'ine dönüştürülür.
Code Demo_jsp.java için açıklama
Code Satır 1: Servlet sınıfı demo_jsp, üst sınıf HttpServlet'ten türetilmiştir.
Code Satır 2-3: JSP'nin servis yöntemini, yani _jspService'i geçersiz kılma; bu yöntem parametre olarak HttpServletRequest ve HttpServletResponse nesnelerini içerir.
Code Satır 4: Açılış yöntemi
Code Satır 5: get metodunu çağırmaWriterYanıt nesnesinin () çıktısını almak içinWriter Nesne (nesnelerin biçimlendirilmiş bir temsilini metin çıktı akışına yazdırır)
Code Satır 6: Yanıt nesnesinin setContentType yöntemini çağırarak içerik türünü ayarlama.
Code Satır 7: Print sınıfının write() yöntemini kullanmaWriter HTML'i ayrıştırmak için nesne
Code Satır 8: demovar değişkenini 0'a başlatma
Code Satır 9: Print sınıfının write() yöntemini çağırma.Writer metni ayrıştırmak için nesne
Code Satır 10: Print sınıfının print() yöntemini çağırmaWriter Nesne, demovar değişkenini 0 + 1 = 1'den artırarak değer elde etmeyi amaçlar. Dolayısıyla çıktı 1 olacaktır.
Code Satır 11: Print sınıfının write() yöntemini kullanmaWriter HTML'i ayrıştırmak için nesne
Çıktı:
Ardından tarayıcı, aşağıdaki ekran görüntüsünde görüldüğü gibi sayacı görüntüler.
- Ekran görüntüsünde çıktının 1 olduğunu görebilirsiniz, çünkü demvar 0'a başlatılmış ve ardından 0 + 1 = 1 olacak şekilde artırılmıştır.
Yukarıdaki örnekte,
- demo.jsp, tek bir değişkenin başlatılıp artırıldığı bir JSP dosyasıdır. Bu JSP dosyası, JSP motorunun JSP sayfasını yükleyip servlet içeriğine dönüştürdüğü bir servlet'e (demo_jsp.class) dönüştürülür.
- Dönüştürme işlemi gerçekleştiğinde, tüm şablon metni println() ifadelerine ve tüm JSP öğeleri de başka bir şekle dönüştürülür. 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ı derlenerek şu hale getirilir: Java sunucu uygulaması sınıfı
- Çevirisi Java JSP sayfasının konteynere dağıtılması ile işlenmesi arasındaki herhangi bir zamanda, kaynak sayfanın uygulama sınıfına dönüştürülmesi işlemi gerçekleşebilir.
- Yukarıdaki görsel açıklamada, demo_jsp.java dosyası demo_jsp.class adlı bir sınıf dosyasına derlenmektedir.
- Apache Tomcat'te her iki yapıt da sunucu çalışma dizini altına yazılır.
work/Catalina/localhost/<app>/org/apache/jspÇeviri hatasının teşhis edilmesi gerektiğinde bakılması gereken ilk yer burasıdır.
3) Sınıf yükleme
- JSP kaynak kodundan oluşturulan servlet sınıfı artık konteynere yükleniyor.
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. Tipik olarak, bir JSP konteyneri bir servlet konteyneri kullanılarak oluşturulur. JSP konteyneri, bir servlet konteynerinin bir uzantısıdır, çünkü her iki konteyner de JSP ve servlet'leri destekler.
- Konteyner tarafından sağlanan JspPage arayüzü, jspInit() ve jspDestroy() yöntemlerini tanımlar.
- HTTP isteklerine hizmet eden bir HttpJspPage arayüzü vardır ve bu arayüz aynı zamanda servis yöntemini de içerir. İmza yapısı protokole bağlıdır, bu nedenle kapsayıcı, sayfa yazarından bunu bildirmesini istemek yerine bu yöntemi kendisi oluşturur.
5) Başlatma
public void jspInit() { //initializing the code }
- jspInit() metodu, JSP'den oluşturulan servlet örneğini başlatır ve bu aşamada konteyner tarafından çağrılır.
- Örnek oluşturulduktan hemen sonra init metodu çağrılır.
- Bu yöntem, bir JSP yaşam döngüsü boyunca yalnızca bir kez çağrılır ve başlatma yöntemi yukarıda gösterildiği gibi tanımlanır.
6) Talep İşleme
void _jspservice(HttpServletRequest request HttpServletResponse response) { //handling all request and responses }
- _jspService() metodu, JSP sayfasının yaşam döngüsü boyunca oluşturduğu tüm istekler için kapsayıcı tarafından çağrılır.
- Bu aşama için sayfanın yukarıdaki tüm aşamalardan geçmesi gerekir ve ancak ondan sonra servis metodu çağrılabilir.
- İstek ve yanıt nesnelerini iletir.
- Bu yöntem geçersiz kılınamaz, çünkü kapsayıcı bunu çeviri sırasında yazar.
- Yukarıda gösterilen yöntem, GET, POST ve diğerleri dahil olmak üzere tüm HTTP yöntemlerini işlemekten sorumludur.
7) Yok et
public void _jspdestroy() { //all clean up code }
- jspDestroy() metodu da konteyner tarafından çağrılır.
- Bu yöntem, konteynerin artık istekleri karşılamak için servlet örneğine ihtiyaç duymadığına karar verdiğinde çağrılır.
- `destroy` metoduna çağrı yapıldıktan sonra, servlet çöp toplama işlemine hazır hale gelir.
- Bu yaşam döngüsünün sonudur.
- Veritabanı bağlantılarını serbest bırakmak veya açık dosyaları kapatmak gibi herhangi bir temizleme işlemi gerçekleştirirken jspDestroy() yöntemini geçersiz kılabiliriz.
Dikkate alınması gereken bir isimlendirme notu: Jakarta EE 9'dan itibaren bu tipler şu bölgelerde yaşıyor: jakarta.servlet.jsp paket yerine javax.servlet.jspDolayısıyla, bir uygulama mevcut bir sunucuya taşındığında eski içe aktarılan verilerin güncellenmesi gerekir.



