JSP livscyklus
Hvad er JSP LifeCycle?
JSP Life Cycle er defineret som oversættelse af JSP-side til servlet, da en JSP-side først skal konverteres til servlet for at kunne behandle serviceanmodningerne. Livscyklussen starter med oprettelsen af JSP og slutter med opløsningen af dette.
Forskellige faser af JSP livscyklus
Når browseren beder om en JSP, tjekker JSP-motoren først, om den skal kompilere siden. Hvis JSP'en sidst er kompileret, eller den seneste ændring er udført i JSP, så kompilerer JSP-motoren siden.
Kompileringsprocessen af JSP-siden involverer tre trin:
- Parsing af JSP
- Forvandler JSP til servlet
- Kompilere servlet
JSP livscyklusdiagram
JSP Lifecycle er afbildet i nedenstående diagram.
Følgende trin forklarer JSP's livscyklus:
- Oversættelse af JSP-side
- Kompilering af JSP-side (Kompilering af JSP-side til _jsp.java)
- Klasseindlæsning (_jsp.java konverteres til klassefilen _jsp.class)
- Instantiering (objektet for den genererede servlet er oprettet)
- Initialisering(
_jspinit()
metoden påkaldes af container) - Anmodningsbehandling (
_jspservice()
metoden påkaldes af containeren) - Ødelæg (
_jspDestroy()
metode, der påberåbes af containeren)
Lad os få en mere detaljeret oversigt over ovenstående punkter:
1) Oversættelse af JSP-siden:
A Java servlet-filen er genereret fra en JSP-kildefil. Dette er det første trin i JSPs livscyklus. I oversættelsesfasen validerer container den syntaktiske korrekthed af JSP-side- og tagfiler.
- JSP-beholderen fortolker standarddirektiverne og -handlingerne og de tilpassede handlinger, der refererer til tagbiblioteker (de er alle en del af JSP-siden og vil blive diskuteret i det senere afsnit), der bruges på denne JSP-side.
- I ovenstående billedbeskrivelse er demo.jsp oversat til demo_jsp.java i det første trin
- Lad os tage 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 til Demo.jsp
Kodelinje 1: html start tag
Kodelinje 2: Hovedmærke
Kodelinje 3 – 4: Title Tag dvs. Demo JSP og afsluttende head tag
Kodelinje 5 – 6: Scriptlet-tag, hvori den variable demo initialiseres
Kodelinje 7 – 8: I body-tag, en tekst, der skal udskrives i outputtet (Antal er: )
Kodelinje 9: Scriplet-tag, hvor man forsøger at udskrive variablen demovar med øget værdi
Kodelinje 10 – 11: Brødtekst og HTML-tags lukket
Demo JSP-side konverteres til demo_jsp-servlet i nedenstående kode.
Kodeforklaring til Demo_jsp.java
Kodelinje 1: Servlet-klassen demo_jsp udvider forældreklassen HttpServlet
Kodelinje 2 – 3: Tilsidesættelse af servicemetoden for jsp, dvs. _jspservice, som har HttpServletRequest- og HttpServletResponse-objekter som sine parametre
Kodelinje 4: Åbningsmetode
Kodelinje 5: Kalder metoden getWriter()
af svarobjekt for at hente PrintWriterobject (udskriver formateret repræsentation af objekter til tekstoutputstrøm)
Kodelinje 6: Kalder setContentType-metoden for svarobjektet for at indstille indholdstypen
Kodelinje 7: Ved brug af write()
metode til PrintWriter-objekt, der forsøger at parse html
Kodelinje 8: Initialiserer demovar variabel til 0
Kodelinje 9: Ringer write()
metode til PrintWriter-objekt til at parse teksten
Kodelinje 10: Ringer print()
metode for PrintWriter-objektet til at øge variablen demovar fra 0+1=1. Derfor vil outputtet være 1
Kodelinje 11: Ved brug af write()
metode til PrintWriter-objekt, der forsøger at parse html
Output:
- Her kan du se, at i skærmbilledet er outputtet 1, fordi demvar initialiseres til 0 og derefter øges til 0+1=1
I ovenstående eksempel
- demo.jsp, er en JSP, hvor en variabel initialiseres og inkrementeres. Denne JSP konverteres til servlet'en (demo_jsp.class ), hvor JSP-motoren indlæser JSP-siden og konverterer til servletindhold.
- Når konverteringen sker, konverteres al skabelontekst til
println()
udtalelser og det hele JSP elementer konverteres til Java kode.
Sådan oversættes en simpel JSP-side til en servlet-klasse.
2) Kompilering af JSP-siden
- Den genererede java-servlet-fil er kompileret i java-servlet-klassen
- Oversættelsen af java-kildesiden til dens implementeringsklasse kan ske når som helst mellem implementeringen af JSP-siden i containeren og behandlingen af JSP-siden.
- I ovenstående billedbeskrivelse er demo_jsp.java kompileret til en klassefil demo_jsp.class
3) Klasseindlæsning
- Servlet-klassen, der er blevet indlæst fra JSP-kilden, er nu indlæst i containeren
4) Instantiering
- I dette trin genereres objektet, dvs. klassens forekomst.
- Containeren administrerer en eller flere forekomster af denne klasse i svaret på anmodninger og andre hændelser. Typisk bygges en JSP-beholder ved hjælp af en servlet-beholder. En JSP container er en udvidelse af servlet container, da både containeren understøtter JSP og servlet.
- En JSPPage-grænseflade, som leveres af container, giver
init()
ogdestroy()
metoder. - Der er en grænseflade HttpJSPPage, som betjener HTTP-anmodninger, og den indeholder også servicemetoden.
5) Initialisering
public void jspInit() { //initializing the code }
_jspinit()
metoden vil starte servlet-forekomsten, som blev genereret fra JSP og vil blive påkaldt af containeren i denne fase.- Når instansen er oprettet, vil init-metoden blive påkaldt umiddelbart efter det
- Den kaldes kun én gang i løbet af en JSP-livscyklus, metoden til initialisering erklæres som vist ovenfor
6) Behandling af anmodning
void _jspservice(HttpServletRequest request HttpServletResponse response) { //handling all request and responses }
_jspservice()
metoden påkaldes af containeren for alle de anmodninger, der rejses af JSP-siden i løbet af dens livscyklus- For denne fase skal den gennemgå alle ovenstående faser, og derefter kan kun servicemetoden påberåbes.
- Det passerer anmodnings- og svarobjekter
- Denne metode kan ikke tilsidesættes
- Metoden er vist ovenfor: Den er ansvarlig for generering af alle HTTP-metoder, dvs. GET, POST osv.
7) Ødelæg
public void _jspdestroy() { //all clean up code }
_jspdestroy()
metoden påkaldes også af containeren- Denne metode kaldes, når containeren beslutter, at den ikke længere har brug for servlet-forekomsten til at servicere anmodninger.
- Når opkaldet til at ødelægge metoden er lavet, er servletten klar til en affaldsindsamling
- Dette er afslutningen på livscyklussen.
- Vi kan tilsidesætte
jspdestroy()
metode, når vi udfører nogen oprydning, såsom frigivelse af databaseforbindelser eller lukning af åbne filer.