JSP livssyklus
Hva er JSP LifeCycle?
JSP-livssyklus er definert som oversettelse av JSP-side til servlet, da en JSP-side må konverteres til servlet først for å behandle tjenesteforespørslene. Livssyklusen starter med opprettelsen av JSP og slutter med oppløsningen av den.
Ulike faser av JSP livssyklus
Når nettleseren ber om en JSP, sjekker JSP-motoren først om den trenger å kompilere siden. Hvis JSP-en sist ble kompilert eller den nylige modifikasjonen er gjort i JSP, kompilerer JSP-motoren siden.
Kompileringsprosessen for JSP-siden involverer tre trinn:
- Parsing av JSP
- Gjør om JSP til servlet
- Kompilere servleten
JSP livssyklusdiagram
JSP Lifecycle er avbildet i diagrammet nedenfor.
Følgende trinn forklarer livssyklusen til JSP:
- Oversettelse av JSP-side
- Samling av JSP-side (Samstilling av JSP-side til _jsp.java)
- Klasselasting (_jsp.java konverteres til klassefilen _jsp.class)
- Instantiering (objekt av generert servlet er opprettet)
- Initialisering(
_jspinit()
metoden påkalles av container) - Forespørselsbehandling (
_jspservice()
metoden påkalles av beholderen) - Ødelegge (
_jspDestroy()
metode som påkalles av beholderen)
La oss ha en mer detaljert oppsummering av punktene ovenfor:
1) Oversettelse av JSP-siden:
A Java servlet-filen er generert fra en JSP-kildefil. Dette er det første trinnet i JSPs livssyklus. I oversettelsesfasen validerer container den syntaktiske korrektheten til JSP-side- og tagfiler.
- JSP-beholderen tolker standarddirektivene og handlingene, og de tilpassede handlingene som refererer til tag-biblioteker (de er alle en del av JSP-siden og vil bli diskutert i den senere delen) som brukes på denne JSP-siden.
- I bildebeskrivelsen ovenfor er demo.jsp oversatt til demo_jsp.java i det første trinnet
- La oss ta et eksempel på "demo.jsp" som vist nedenfor:
Demo.jsp
<html> <head> <title>Demo JSP</title> </head> <% int demvar=0;%> <body> Count is: <% Out.println(demovar++); %> <body> </html>
Kodeforklaring for Demo.jsp
Kodelinje 1: html starttag
Kodelinje 2: Hodemerke
Kodelinje 3 – 4: Title Tag dvs. Demo JSP og avsluttende head tag
Kodelinje 5 – 6: Scriptlet-tag der initialisering av variabeldemoen
Kodelinje 7 – 8: I body-tag, en tekst som skal skrives ut i utdataene (Antallet er: )
Kodelinje 9: Scriplet-tag der prøver å skrive ut variabelen demovar med økt verdi
Kodelinje 10 – 11: Brødtekst og HTML-tagger lukket
Demo JSP-siden konverteres til demo_jsp-servlet i koden nedenfor.
Kodeforklaring for Demo_jsp.java
Kodelinje 1: Servlet-klassen demo_jsp utvider foreldreklassen HttpServlet
Kodelinje 2 – 3: Overstyrer tjenestemetoden til jsp, dvs. _jspservice som har HttpServletRequest- og HttpServletResponse-objekter som parametere
Kodelinje 4: Åpningsmetode
Kodelinje 5: Kaller metoden getWriter()
av responsobjekt for å hente PrintWriterobject (skriver ut formatert representasjon av objekter til tekstutdatastrøm)
Kodelinje 6: Kaller opp setContentType-metoden for responsobjektet for å angi innholdstypen
Kodelinje 7: Ved hjelp av write()
metoden til PrintWriter-objektet som prøver å analysere html
Kodelinje 8: Initialiserer demovar-variabelen til 0
Kodelinje 9: Ringer write()
metoden til PrintWriter-objektet for å analysere teksten
Kodelinje 10: Ringer print()
metoden til PrintWriter-objektet for å øke variabelen demovar fra 0+1=1. Derfor vil utgangen være 1
Kodelinje 11: Ved hjelp av write()
metoden til PrintWriter-objektet som prøver å analysere html
Utgang:
- Her kan du se at i skjermbildet er output 1 fordi demvar initialiseres til 0 og deretter økes til 0+1=1
I eksemplet ovenfor,
- demo.jsp, er en JSP der én variabel initialiseres og økes. Denne JSP-en konverteres til servleten (demo_jsp.class ) der JSP-motoren laster JSP-siden og konverterer til servletinnhold.
- Når konverteringen skjer, konverteres all maltekst til
println()
uttalelser og alt JSP-elementer blir konvertert til Java kode.
Dette er hvordan en enkel JSP-side blir oversatt til en servlet-klasse.
2) Kompilering av JSP-siden
- Den genererte java servlet-filen er kompilert i java servlet-klassen
- Oversettelsen av java-kildesiden til implementeringsklassen kan skje når som helst mellom distribusjonen av JSP-siden til beholderen og behandlingen av JSP-siden.
- I bildebeskrivelsen ovenfor er demo_jsp.java kompilert til en klassefil demo_jsp.class
3) Klasselasting
- Servlet-klassen som har blitt lastet fra JSP-kilden er nå lastet inn i beholderen
4) Instantiering
- I dette trinnet genereres objektet, dvs. forekomsten av klassen.
- Beholderen administrerer én eller flere forekomster av denne klassen i svaret på forespørsler og andre hendelser. Vanligvis bygges en JSP-beholder ved hjelp av en servletbeholder. En JSP-beholder er en utvidelse av servletbeholder, da både beholderen støtter JSP og servlet.
- Et JSPPage-grensesnitt som leveres av container gir
init()
ogdestroy()
metoder. - Det er et grensesnitt HttpJSPPage som betjener HTTP-forespørsler, og det inneholder også tjenestemetoden.
5) Initialisering
public void jspInit() { //initializing the code }
_jspinit()
metoden vil starte servlet-forekomsten som ble generert fra JSP og vil bli påkalt av beholderen i denne fasen.- Når forekomsten er opprettet, vil init-metoden bli påkalt umiddelbart etter det
- Den kalles bare én gang i løpet av en JSP-livssyklus, metoden for initialisering er deklarert som vist ovenfor
6) Behandling av forespørsel
void _jspservice(HttpServletRequest request HttpServletResponse response) { //handling all request and responses }
_jspservice()
metoden påkalles av containeren for alle forespørslene som reises av JSP-siden i løpet av livssyklusen- For denne fasen må den gå gjennom alle de ovennevnte fasene, og da kan bare tjenestemetoden påkalles.
- Den passerer forespørsels- og svarobjekter
- Denne metoden kan ikke overstyres
- Metoden er vist ovenfor: Den er ansvarlig for å generere alle HTTP-metoder, dvs. GET, POST, etc.
7) Ødelegg
public void _jspdestroy() { //all clean up code }
_jspdestroy()
metoden påkalles også av beholderen- Denne metoden kalles når containeren bestemmer at den ikke lenger trenger servlet-forekomsten for å betjene forespørsler.
- Når oppfordringen til å ødelegge metoden er gjort, er servleten klar for en søppelsamling
- Dette er slutten på livssyklusen.
- Vi kan overstyre
jspdestroy()
metode når vi utfører opprydding, for eksempel frigjøring av databasetilkoblinger eller lukking av åpne filer.