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.
Följande steg förklarar livscykeln för JSP:
- Översättning av JSP-sida
- Sammanställning av JSP-sida (Kompilering av JSP-sida till _jsp.java)
- Klassladdning (_jsp.java konverteras till klassfilen _jsp.class)
- Instantiering (Objekt med genererad servlet skapas)
- Initiering(
_jspinit()
metod anropas av container) - Begäran behandlas (
_jspservice()
metoden anropas av behållaren) - 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.
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:
- 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()
ochdestroy()
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.