JSP livscyklus

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.

JSP livscyklus

Følgende trin forklarer JSP's livscyklus:

  1. Oversættelse af JSP-side
  2. Kompilering af JSP-side (Kompilering af JSP-side til _jsp.java)
  3. Klasseindlæsning (_jsp.java konverteres til klassefilen _jsp.class)
  4. Instantiering (objektet for den genererede servlet er oprettet)
  5. Initialisering(_jspinit() metoden påkaldes af container)
  6. Anmodningsbehandling (_jspservice() metoden påkaldes af containeren)
  7. Ø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.

JSP livscyklus

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:

JSP livscyklus

  • 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() og destroy() 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.