«Vorige zelfstudie: JSP introductie
Volgende zelfstudie: JSP-richtlijnen »
JSP-pagina's worden opgeslagen met de .jsp-extensie die de server laat weten dat dit een JSP-pagina is en de levenscyclusfasen van JSP moet doorlopen.
In mijn vorige bericht over de introductie van JSP, legde ik uit dat JSP niet als zodanig wordt verwerkt, ze eerst worden omgezet in Servelts en vervolgens de bijbehorende servlet wordt verwerkt door Server.
Wanneer de client een verzoek indient bij Server, gaat dit eerst naar de container. Vervolgens controleert de container of de servletklasse ouder is dan de jsp-pagina (om ervoor te zorgen dat het JSP-bestand is gewijzigd). Als dit het geval is, voert de container de vertaling opnieuw uit (converteert JSP naar Servlet), anders wordt de vertaalfase overgeslagen (dwz als de JSP-webpagina niet wordt gewijzigd, wordt de vertaling niet uitgevoerd om de prestaties te verbeteren, omdat deze fase tijd kost en herhaal deze stap elke keer dat tijd niet haalbaar is)
De stappen in de levenscyclus van jsp-pagina zijn:
Laat de levenscyclus van JSP in meer detail zien -
1) Zoals hierboven vermeld, telkens wanneer de container een verzoek van de klant ontvangt, vertaalt deze alleen wanneer de servletklasse ouder is dan de JSP-pagina, anders slaat deze fase over (reden die ik hierboven heb uitgelegd).
2) Vervolgens de container -
compileert het bijbehorende servlet-programma
Laadt de bijbehorende servletklasse
Instantieert de servlet-klasse
Roept de methode jspInit () aan om de servlet-instantie te initialiseren (de Jsp-container doet deze taak alleen als de instantie van het servlet-bestand niet actief is of als deze ouder is dan het jsp-bestand.)
// code om Servlet-instanties te initialiseren
3) Vervolgens wordt een nieuwe thread gemaakt, die de methode _jspService () aanroept , met een aanvraag (HttpServletRequest) en respons (HttpServletRespnse) objecten als parameters - hieronder weergegeven.
void _jspService (HttpServletRequest req, HttpServletResponse res)
// code komt hier
4) Roept de methode jspDestroy () aan om de instantie van de servlet-klasse te vernietigen. code ziet er hieronder uit -