Ciclul de viață JSP
Ce este JSP LifeCycle?
Ciclul de viață JSP este definit ca traducerea paginii JSP în servlet, deoarece o pagină JSP trebuie mai întâi convertită în servlet pentru a procesa cererile de servicii. Ciclul de viață începe cu crearea JSP și se termină cu dezintegrarea acestuia.
Diferite faze ale ciclului de viață JSP
Când browserul solicită un JSP, motorul JSP verifică mai întâi dacă trebuie să compileze pagina. Dacă JSP-ul a fost compilat ultima dată sau modificarea recentă este făcută în JSP, atunci motorul JSP compilează pagina.
Procesul de compilare a paginii JSP implică trei pași:
- Analiza JSP
- Transformarea JSP în servlet
- Compilarea servlet-ului
Diagrama ciclului de viață JSP
Ciclul de viață JSP este prezentat în diagrama de mai jos.
Următorii pași explică ciclul de viață al JSP:
- Traducerea paginii JSP
- Compilarea paginii JSP (Compilarea paginii JSP în _jsp.java)
- Încărcare de clasă (_jsp.java este convertit în fișierul de clasă _jsp.class)
- Instanciare (obiectul servlet-ului generat este creat)
- Inițializare(
_jspinit()
metoda este invocată de container) - Procesarea cererii(
_jspservice()
metoda este invocată de container) - Distruge (
_jspDestroy()
metoda invocata de container)
Să avem un rezumat mai detaliat asupra punctelor de mai sus:
1) Traducerea paginii JSP:
A Java Fișierul servlet este generat dintr-un fișier sursă JSP. Acesta este primul pas al ciclului de viață JSP. În faza de traducere, containerul validează corectitudinea sintactică a fișierelor de pagină și etichete JSP.
- Containerul JSP interpretează directivele și acțiunile standard și acțiunile personalizate care fac referire la biblioteci de etichete (toate fac parte din pagina JSP și vor fi discutate în secțiunea ulterioară) utilizate în această pagină JSP.
- În descrierea ilustrată de mai sus, demo.jsp este tradus în demo_jsp.java în primul pas
- Să luăm un exemplu de „demo.jsp”, așa cum se arată mai jos:
Demo.jsp
<html> <head> <title>Demo JSP</title> </head> <% int demvar=0;%> <body> Count is: <% Out.println(demovar++); %> <body> </html>
Explicația codului pentru Demo.jsp
Linia de cod 1: etichetă de pornire html
Linia de cod 2: Etichetă de cap
Linia de cod 3 – 4: Title Tag, adică Demo JSP și eticheta de închidere
Linia de cod 5 – 6: etichetă de scriptlet în care inițializează variabila demo
Linia de cod 7 – 8: În eticheta corporală, un text care urmează să fie tipărit în rezultat (Numărul este: )
Linia de cod 9: Eticheta Scriplet în care se încearcă imprimarea variabilei demovar cu valoare incrementată
Linia de cod 10 – 11: Etichetele body și HTML s-au închis
Pagina Demo JSP este convertită în servlet demo_jsp în codul de mai jos.
Explicația codului pentru Demo_jsp.java
Linia de cod 1: Clasa servlet demo_jsp extinde clasa părinte HttpServlet
Linia de cod 2 – 3: suprascrie metoda de serviciu a jsp, adică _jspservice, care are ca parametri obiectele HttpServletRequest și HttpServletResponse
Linia de cod 4: Metoda de deschidere
Linia de cod 5: Apelarea metodei getWriter()
a obiectului de răspuns pentru a obține PrintWriteobject (tipărește reprezentarea formatată a obiectelor în fluxul de ieșire text)
Linia de cod 6: Apelarea metodei setContentType a obiectului răspuns pentru a seta tipul de conținut
Linia de cod 7: Folosind write()
metoda obiectului PrintWriter care încearcă să analizeze html
Linia de cod 8: Inițializarea variabilei demovar la 0
Linia de cod 9: Apel write()
metoda obiectului PrintWriter pentru a analiza textul
Linia de cod 10: Apel print()
metoda obiectului PrintWriter pentru a incrementa variabila demovar de la 0+1=1. Prin urmare, rezultatul va fi 1
Linia de cod 11: Folosind write()
metoda obiectului PrintWriter care încearcă să analizeze html
ieșire:
- Aici puteți vedea că în captură de ecran Ieșirea este 1 deoarece demvar este inițializat la 0 și apoi incrementat la 0+1=1
În exemplul de mai sus,
- demo.jsp, este un JSP în care o variabilă este inițializată și incrementată. Acest JSP este convertit în servlet (demo_jsp.class ) în care motorul JSP încarcă Pagina JSP și se convertește în conținut servlet.
- Când are loc conversia, tot textul șablonului este convertit
println()
declarații și tot elemente JSP sunt convertite în Java cod.
Acesta este modul în care o pagină JSP simplă este tradusă într-o clasă servlet.
2) Compilarea paginii JSP
- Fișierul servlet java generat este compilat în clasa servlet java
- Traducerea paginii sursă java în clasa sa de implementare poate avea loc în orice moment între implementarea paginii JSP în container și procesarea paginii JSP.
- În descrierea ilustrată de mai sus, demo_jsp.java este compilat într-un fișier de clasă demo_jsp.class
3) Încărcare de clasă
- Clasa de servlet care a fost încărcată din sursa JSP este acum încărcată în container
4) Instanciare
- În acest pas este generat obiectul, adică instanța clasei.
- Containerul gestionează una sau mai multe instanțe ale acestei clase în răspunsul la solicitări și alte evenimente. De obicei, un container JSP este construit folosind un container servlet. Un container JSP este o extensie a containerului servlet, deoarece containerul acceptă JSP și servlet.
- O interfață JSPPage care este furnizată de container oferă
init()
sidestroy()
metode. - Există o interfață HttpJSPPage care servește cererile HTTP și conține, de asemenea, metoda de serviciu.
5) Inițializare
public void jspInit() { //initializing the code }
_jspinit()
metoda va iniția instanța de servlet care a fost generată din JSP și va fi invocată de container în această fază.- Odată ce instanța este creată, metoda init va fi invocată imediat după aceea
- Este apelat o singură dată în timpul unui ciclu de viață JSP, metoda de inițializare este declarată așa cum se arată mai sus
6) Procesarea cererii
void _jspservice(HttpServletRequest request HttpServletResponse response) { //handling all request and responses }
_jspservice()
metoda este invocată de container pentru toate solicitările generate de pagina JSP în timpul ciclului său de viață- Pentru această fază, trebuie să treacă prin toate fazele de mai sus și apoi poate fi invocată numai metoda de service.
- Transmite obiecte de cerere și răspuns
- Această metodă nu poate fi anulată
- Metoda este prezentată mai sus: este responsabilă pentru generarea tuturor metodelor HTTP, adică GET, POST etc.
7) Distrugeți
public void _jspdestroy() { //all clean up code }
_jspdestroy()
metoda este de asemenea invocată de container- Această metodă este apelată atunci când containerul decide că nu mai are nevoie de instanța servlet pentru a deservi cererile.
- Atunci când se face apelul la metoda distrugerii, servletul este pregătit pentru o colectare de gunoi
- Acesta este sfârșitul ciclului de viață.
- Putem trece peste
jspdestroy()
metoda atunci când efectuăm orice curățare, cum ar fi eliberarea conexiunilor la baza de date sau închiderea fișierelor deschise.