JSP životni ciklus

jsp životni ciklus

Što je JSP LifeCycle?

Životni ciklus JSP-a definiran je kao prijevod JSP stranice u servlet budući da se JSP stranica najprije mora pretvoriti u servlet kako bi obradila zahtjeve za uslugom. Životni ciklus počinje stvaranjem JSP-a i završava njegovim raspadom.

Različite faze životnog ciklusa JSP-a

Kada preglednik zatraži JSP, JSP motor prvo provjerava treba li prevesti stranicu. Ako je JSP posljednji put kompajliran ili je nedavna izmjena učinjena u JSP-u, tada JSP mehanizam kompajlira stranicu.

Proces kompilacije JSP stranice uključuje tri koraka:

  • Raščlanjivanje JSP-a
  • Pretvaranje JSP-a u servlet
  • Sastavljanje servleta

JSP dijagram životnog ciklusa

Životni ciklus JSP-a prikazan je na donjem dijagramu.

JSP životni ciklus

Sljedeći koraci objašnjavaju životni ciklus JSP-a:

  1. Prijevod JSP stranice
  2. Kompilacija JSP stranice (Kompilacija JSP stranice u _jsp.java)
  3. Učitavanje klase (_jsp.java se pretvara u datoteku klase _jsp.class)
  4. Instancija (stvara se objekt generiranog servleta)
  5. Inicijalizacija (_jspinit() metodu poziva spremnik)
  6. Obrada zahtjeva (_jspservice() metodu poziva spremnik)
  7. Uništi (_jspDestroy() metoda koju poziva spremnik)

Dopustimo detaljniji sažetak gore navedenih točaka:

1) Prijevod JSP stranice:

A Java servlet datoteka se generira iz JSP izvorne datoteke. Ovo je prvi korak JSP životnog ciklusa. U fazi prijevoda, spremnik provjerava sintaktičku ispravnost JSP stranica i datoteka oznaka.

  • JSP spremnik tumači standardne direktive i radnje te prilagođene radnje koje se odnose na biblioteke oznaka (sve su one dio JSP stranice i o njima će se raspravljati u kasnijem odjeljku) koje se koriste na ovoj JSP stranici.
  • U gornjem slikovnom opisu, demo.jsp je preveden u demo_jsp.java u prvom koraku
  • Uzmimo primjer "demo.jsp" kao što je prikazano u nastavku:

Demo.jsp

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

Objašnjenje koda za Demo.jsp

Kodna linija 1: html početna oznaka

Kodna linija 2: Oznaka za glavu

Kodna linija 3 – 4: Oznaka naslova tj. demo JSP i završna oznaka zaglavlja

Kodna linija 5 – 6: Oznaka skriptleta u kojoj se inicijalizira varijabla demo

Kodna linija 7 – 8: U oznaci tijela, tekst koji će se ispisati u izlazu (Broj je: )

Redak koda 9: Oznaka skripte gdje pokušava ispisati varijablu demovar s povećanom vrijednošću

Redak koda 10 – 11: Body i HTML oznake su zatvorene

Demo JSP stranica pretvara se u demo_jsp servlet u donjem kodu.

JSP životni ciklus

Objašnjenje koda za Demo_jsp.java

Kodna linija 1: Servlet klasa demo_jsp proširuje nadređenu klasu HttpServlet

Kodna linija 2 – 3: Nadjačavanje metode usluge jsp tj. _jspservice koja ima HttpServletRequest i HttpServletResponse objekte kao svoje parametre

Kodna linija 4: Način otvaranja

Kodna linija 5: Pozivanje metode getWriter() objekta odgovora za dobivanje PrintWriterobject (ispisuje formatiranu reprezentaciju objekata u izlazni tok teksta)

Kodna linija 6: Pozivanje metode setContentType objekta odgovora za postavljanje vrste sadržaja

Kodna linija 7: Korištenje write() metoda PrintWriter objekta koji pokušava analizirati html

Kodna linija 8: Pokretanje varijable demovar na 0

Kodna linija 9: Zovem write() metoda PrintWriter objekta za raščlanjivanje teksta

Kodna linija 10: Zovem print() metoda PrintWriter objekta za povećanje varijable demovar od 0+1=1. Stoga će izlaz biti 1

Kodna linija 11: Korištenje write() metoda PrintWriter objekta koji pokušava analizirati html

Izlaz:

JSP životni ciklus

  • Ovdje možete vidjeti da je na snimci zaslona izlaz 1 jer je demvar inicijaliziran na 0, a zatim povećan na 0+1=1

U gornjem primjeru,

  • demo.jsp je JSP gdje se jedna varijabla inicijalizira i povećava. Ovaj JSP se pretvara u servlet (demo_jsp.class) pri čemu JSP mehanizam učitava JSP stranicu i pretvara u sadržaj servleta.
  • Kada se konverzija dogodi, sav tekst predloška se pretvara u println() izjave i sve JSP elementi se pretvaraju u Java kodirati.

Ovo je način na koji se jednostavna JSP stranica prevodi u klasu servleta.

2) Kompilacija JSP stranice

  • Generirana datoteka java servleta kompajlira se u klasu java servleta
  • Prijevod java izvorne stranice u njezinu klasu implementacije može se dogoditi u bilo kojem trenutku između postavljanja JSP stranice u spremnik i obrade JSP stranice.
  • U gornjem slikovnom opisu demo_jsp.java kompilira se u datoteku klase demo_jsp.class

3) Učitavanje razreda

  • Klasa servleta koja je učitana iz JSP izvora sada je učitana u spremnik

4) Instanciranje

  • U ovom koraku generira se objekt tj. instanca klase.
  • Spremnik upravlja jednom ili više instanci ove klase kao odgovor na zahtjeve i druge događaje. Obično se JSP spremnik gradi pomoću spremnika servleta. JSP spremnik je proširenje servlet spremnika budući da i spremnik podržava JSP i servlet.
  • Sučelje JSPPage koje pruža spremnik pruža init() i destroy() metode.
  • Postoji sučelje HttpJSPPage koje poslužuje HTTP zahtjeve, a sadrži i servisnu metodu.

5) Inicijalizacija

public void jspInit()
{
	//initializing the code
}
  • _jspinit() metoda će pokrenuti instancu servleta koja je generirana iz JSP-a i pozvati će je spremnik u ovoj fazi.
  • Nakon što se instanca stvori, init metoda će se odmah nakon toga pozvati
  • Poziva se samo jednom tijekom životnog ciklusa JSP-a, metoda za inicijalizaciju se deklarira kao što je prikazano gore

6) Obrada zahtjeva

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() metodu poziva spremnik za sve zahtjeve koje podigne JSP stranica tijekom svog životnog ciklusa
  • Za ovu fazu mora proći sve gore navedene faze i tada se može pozvati samo servisna metoda.
  • Prolazi objekte zahtjeva i odgovora
  • Ova se metoda ne može poništiti
  • Metoda je prikazana gore: odgovorna je za generiranje svih HTTP metoda, npr. GET, POST, itd.

7) Uništiti

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() metodu također poziva spremnik
  • Ova se metoda poziva kada spremnik odluči da više ne treba instancu servleta za servisiranje zahtjeva.
  • Kada se izvrši poziv za uništavanje metode, servlet je spreman za sakupljanje smeća
  • Ovo je kraj životnog ciklusa.
  • Možemo nadjačati jspdestroy() kada izvodimo bilo kakvo čišćenje kao što je otpuštanje veza s bazom podataka ili zatvaranje otvorenih datoteka.