JSP livscykel

jsp livscykel

Vad är JSP LifeCycle?

JSP Life Cycle definieras som översättning av JSP-sida till servlet, eftersom en JSP-sida måste konverteras till servlet först för att kunna bearbeta tjänsteförfrågningarna. Livscykeln börjar med skapandet av JSP och slutar med sönderfallet av det.

Olika faser av JSP-livscykeln

När webbläsaren frågar efter en JSP, kontrollerar JSP-motorn först om den behöver kompilera sidan. Om JSP:n senast kompilerades eller den senaste ändringen görs i JSP, kompilerar JSP-motorn sidan.

Sammanställningsprocessen för JSP-sidan innefattar tre steg:

  • Parsing av JSP
  • Förvandlar JSP till servlet
  • Kompilerar servleten

JSP livscykeldiagram

JSP-livscykeln avbildas i diagrammet nedan.

JSP livscykel

Följande steg förklarar livscykeln för JSP:

  1. Översättning av JSP-sida
  2. Sammanställning av JSP-sida (Kompilering av JSP-sida till _jsp.java)
  3. Klassladdning (_jsp.java konverteras till klassfilen _jsp.class)
  4. Instantiering (Objekt med genererad servlet skapas)
  5. Initiering(_jspinit() metod anropas av container)
  6. Begäran behandlas (_jspservice() metoden anropas av behållaren)
  7. Förstör (_jspDestroy() metod som anropas av behållaren)

Låt oss ha en mer detaljerad sammanfattning av ovanstående punkter:

1) Översättning av JSP-sidan:

A Java servlet-filen genereras från en JSP-källfil. Detta är det första steget i JSP:s livscykel. I översättningsfasen validerar behållaren den syntaktiska korrektheten för JSP-sidor och taggfiler.

  • JSP-behållaren tolkar standarddirektiven och -åtgärderna och de anpassade åtgärderna som refererar till taggbibliotek (de är alla en del av JSP-sidan och kommer att diskuteras i det senare avsnittet) som används på den här JSP-sidan.
  • I ovanstående bildbeskrivning översätts demo.jsp till demo_jsp.java i det första steget
  • Låt oss ta ett exempel på "demo.jsp" som visas nedan:

Demo.jsp

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

Kodförklaring för Demo.jsp

Kodrad 1: html starttagg

Kodrad 2: Huvudbricka

Kodrad 3 – 4: Titeltagg dvs Demo JSP och avslutande huvudtagg

Kodrad 5 – 6: Scriptlet-tagg där variabeldemon initieras

Kodrad 7 – 8: I body-taggen, en text som ska skrivas ut i utgången (Antalet är: )

Kodrad 9: Scriplet-tagg där man försöker skriva ut variabeln demovar med ökat värde

Kodrad 10 – 11: Brödtext och HTML-taggar stängda

Demo JSP-sidan konverteras till demo_jsp-servlet i koden nedan.

JSP livscykel

Kodförklaring för Demo_jsp.java

Kodrad 1: Servlet-klassen demo_jsp utökar föräldraklassen HttpServlet

Kodrad 2 – 3: Åsidosätter servicemetoden för jsp dvs. _jspservice som har HttpServletRequest- och HttpServletResponse-objekt som sina parametrar

Kodrad 4: Öppningsmetod

Kodrad 5: Kallar metoden getWriter() av svarsobjekt för att hämta PrintWriterobject (skriver ut formaterad representation av objekt till textutgångsström)

Kodrad 6: Anropar setContentType-metoden för svarsobjektet för att ställa in innehållstypen

Kodrad 7: Använder sig av write() metod för PrintWriter-objekt som försöker analysera html

Kodrad 8: Initierar demovar-variabeln till 0

Kodrad 9: Ringer write() metoden för PrintWriter-objektet för att analysera texten

Kodrad 10: Ringer print() metoden för PrintWriter-objektet för att öka variabeln demovar från 0+1=1. Därför blir utdata 1

Kodrad 11: Använder sig av write() metod för PrintWriter-objekt som försöker analysera html

Produktion:

JSP livscykel

  • Här kan du se att i skärmdumpen är utgången 1 eftersom demvar initieras till 0 och sedan inkrementeras till 0+1=1

I exemplet ovan,

  • demo.jsp, är en JSP där en variabel initieras och inkrementeras. Denna JSP konverteras till servleten (demo_jsp.class ) där JSP-motorn laddar JSP-sidan och konverterar till servletinnehåll.
  • När konverteringen sker konverteras all malltext till println() uttalanden och allt JSP-element konverteras till Java koda.

Så här översätts en enkel JSP-sida till en servletklass.

2) Sammanställning av JSP-sidan

  • Den genererade javaservletfilen kompileras till javaservletklass
  • Översättningen av Java-källsidan till dess implementeringsklass kan ske när som helst mellan distributionen av JSP-sidan i behållaren och bearbetningen av JSP-sidan.
  • I ovanstående bildbeskrivning kompileras demo_jsp.java till en klassfil demo_jsp.class

3) Klassladdning

  • Servlet-klass som har laddats från JSP-källan laddas nu in i behållaren

4) Instantiering

  • I detta steg genereras objektet dvs klassens instans.
  • Behållaren hanterar en eller flera instanser av den här klassen i svaret på förfrågningar och andra händelser. Vanligtvis byggs en JSP-behållare med en servlet-behållare. En JSP-behållare är en förlängning av servlet-behållare eftersom både behållaren stöder JSP och servlet.
  • Ett JSPPage-gränssnitt som tillhandahålls av container tillhandahåller init() och destroy() metoder.
  • Det finns ett gränssnitt HttpJSPPage som betjänar HTTP-förfrågningar, och det innehåller även tjänstemetoden.

5) Initiering

public void jspInit()
{
	//initializing the code
}
  • _jspinit() metod kommer att initiera servletinstansen som genererades från JSP och kommer att anropas av behållaren i denna fas.
  • När instansen har skapats kommer init-metoden att anropas direkt efter det
  • Den anropas bara en gång under en JSP-livscykel, metoden för initiering deklareras enligt ovan

6) Behandling av begäran

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() metoden anropas av behållaren för alla förfrågningar som väcks av JSP-sidan under dess livscykel
  • För denna fas måste den gå igenom alla ovanstående faser och då kan endast servicemetoden anropas.
  • Den skickar förfrågnings- och svarsobjekt
  • Denna metod kan inte åsidosättas
  • Metoden visas ovan: Den är ansvarig för att generera alla HTTP-metoder dvs GET, POST, etc.

7) Förstör

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() metoden anropas också av behållaren
  • Den här metoden anropas när behållaren beslutar att den inte längre behöver servletinstansen för att betjäna begäranden.
  • När anropet att förstöra metoden görs, är servleten redo för en sophämtning
  • Detta är slutet på livscykeln.
  • Vi kan åsidosätta jspdestroy() metod när vi utför någon rensning som att släppa databasanslutningar eller stänga öppna filer.