Cycle de vie des JSP

Quโest-ce que le cycle de vie JSP ?
Le cycle de vie JSP est dรฉfini comme la traduction d'une page JSP en servlet, car une page JSP doit d'abord รชtre convertie en servlet afin de traiter les demandes de service. Le cycle de vie commence avec la crรฉation de JSP et se termine par sa dรฉsintรฉgration.
Diffรฉrentes phases du cycle de vie JSP
Lorsque le navigateur demande un JSP, le moteur JSP vรฉrifie d'abord s'il doit compiler la page. Si le JSP est compilรฉ pour la derniรจre fois ou si la modification rรฉcente est effectuรฉe dans JSP, alors le moteur JSP compile la page.
Le processus de compilation d'une page JSP comporte trois รฉtapes :
- Analyse de JSP
- Transformer JSP en servlet
- Compilation de la servlet
Diagramme du cycle de vie JSP
Le cycle de vie JSP est reprรฉsentรฉ dans le diagramme ci-dessous.
Les รฉtapes suivantes expliquent le cycle de vie de JSP :
- Traduction de la page JSP
- Compilation de la page JSP (Compilation de la page JSP dans _jsp.java)
- Chargement de classe (_jsp.java est converti en fichier de classe _jsp.class)
- Instanciation (L'objet du servlet gรฉnรฉrรฉ est crรฉรฉ)
- Initialisation(
_jspinit()la mรฉthode est invoquรฉe par le conteneur) - Traitement des demandes (
_jspservice()la mรฉthode est invoquรฉe par le conteneur) - Dรฉtruire (
_jspDestroy()mรฉthode invoquรฉe par le conteneur)
Voyons un rรฉsumรฉ plus dรฉtaillรฉ sur les points ci-dessus :
1) Traduction de la page JSP :
A Java Le fichier servlet est gรฉnรฉrรฉ ร partir d'un fichier source JSP. Il s'agit de la premiรจre รฉtape du cycle de vie de JSP. En phase de traduction, le conteneur valide l'exactitude syntaxique des pages JSP et des fichiers de balises.
- Le conteneur JSP interprรจte les directives et actions standard, ainsi que les actions personnalisรฉes faisant rรฉfรฉrence aux bibliothรจques de balises (elles font toutes partie de la page JSP et seront abordรฉes dans la section suivante) utilisรฉes dans cette page JSP.
- Dans la description illustrรฉe ci-dessus, demo.jsp est traduit en demo_jsp.java dans la premiรจre รฉtape
- Prenons un exemple de ยซ demo.jsp ยป comme indiquรฉ ci-dessous :
Dรฉmo.jsp
<html> <head> <title>Demo JSP</title> </head> <% int demvar=0;%> <body> Count is: <% Out.println(demovar++); %> <body> </html>
Code Explication du fichier Demo.jsp
Code La ligne 1,: balise de dรฉbut html
Code La ligne 2,: Balise de tรชte
Code Ligne 3 โ 4: Balise de titre, c'est-ร -dire Dรฉmo JSP et balise de fermeture
Code Ligne 5 โ 6: Balise de scriptlet dans laquelle initialiser la variable dรฉmo
Code Ligne 7 โ 8: Dans la balise body, un texte ร imprimer dans la sortie (le nombre est : )
Code Ligne 9: Balise de script oรน l'on essaie d'imprimer la variable demovar avec une valeur incrรฉmentรฉe
Code Lignes 10 et 11 : Balises corps et HTML fermรฉes
La page de dรฉmonstration JSP est convertie en servlet demo_jsp dans le code ci-dessous.
Code Explication du fichier Demo_jsp.java
Code La ligne 1,: La classe servlet demo_jsp รฉtend la classe parent HttpServlet
Code Ligne 2 โ 3: Remplacement de la mรฉthode de service de jsp, c'est-ร -dire _jspservice qui a les objets HttpServletRequest et HttpServletResponse comme paramรจtres
Code La ligne 4,: Mรฉthode d'ouverture
Code La ligne 5,: Appel de la mรฉthode getWriter() de l'objet de rรฉponse ร obtenir PrintWriterobjet (imprime une reprรฉsentation formatรฉe des objets dans un flux de sortie texte)
Code La ligne 6, : Appel de la mรฉthode setContentType de l'objet de rรฉponse pour dรฉfinir le type de contenu
Code La ligne 7,: En utilisant write() mรฉthode d'impressionWriter objet tentant d'analyser du HTML
Code La ligne 8,: Initialisation de la variable demovar ร 0
Code La ligne 9,: Appel write() mรฉthode d'impressionWriter objet pour analyser le texte
Code La ligne 10,: Appel print() mรฉthode d'impressionWriter L'objet permet d'incrรฉmenter la variable demovar de 0+1=1. Par consรฉquent, la sortie sera 1.
Code La ligne 11,: En utilisant write() mรฉthode d'impressionWriter objet tentant d'analyser du HTML
Sortie :
- Ici, vous pouvez voir que dans la capture d'รฉcran, la sortie est 1 car demvar est initialisรฉ ร 0 puis incrรฉmentรฉ ร 0+1=1
Dans l'exemple ci-dessus,
- demo.jsp, est un JSP dans lequel une variable est initialisรฉe et incrรฉmentรฉe. Ce JSP est converti en servlet (demo_jsp.class ) dans lequel le moteur JSP charge la page JSP et la convertit en contenu de servlet.
- Lorsque la conversion a lieu, tout le texte du modรจle est converti en
println()dรฉclarations et tout รlรฉments JSP sont convertis en Java code.
C'est ainsi qu'une simple page JSP est traduite en une classe de servlet.
2) Compilation de la page JSP
- Le fichier de servlet Java gรฉnรฉrรฉ est compilรฉ dans la classe de servlet Java
- La traduction de la page source Java vers sa classe d'implรฉmentation peut avoir lieu ร tout moment entre le dรฉploiement de la page JSP dans le conteneur et le traitement de la page JSP.
- Dans la description illustrรฉe ci-dessus, demo_jsp.java est compilรฉ dans un fichier de classe demo_jsp.class
3) Chargement de classe
- La classe de servlet chargรฉe ร partir de la source JSP est maintenant chargรฉe dans le conteneur
4) Instanciation
- Dans cette รฉtape, l'objet, c'est-ร -dire l'instance de la classe, est gรฉnรฉrรฉ.
- Le conteneur gรจre une ou plusieurs instances de cette classe en rรฉponse aux requรชtes et autres รฉvรฉnements. Gรฉnรฉralement, un conteneur JSP est construit ร l'aide d'un conteneur de servlet. Un conteneur JSP est une extension du conteneur de servlet car le conteneur prend en charge JSP et le servlet.
- Une interface JSPPage fournie par le conteneur fournit
init()etdestroy()mรฉthodes. - Il existe une interface HttpJSPPage qui sert les requรชtes HTTP et contient รฉgalement la mรฉthode de service.
5) Initialisation
public void jspInit()
{
//initializing the code
}
_jspinit()La mรฉthode lancera l'instance de servlet qui a รฉtรฉ gรฉnรฉrรฉe ร partir de JSP et sera invoquรฉe par le conteneur dans cette phase.- Une fois l'instance crรฉรฉe, la mรฉthode init sera invoquรฉe immรฉdiatement aprรจs.
- Il n'est appelรฉ qu'une seule fois au cours du cycle de vie d'un JSP, la mรฉthode d'initialisation est dรฉclarรฉe comme indiquรฉ ci-dessus
6) Traitement des demandes
void _jspservice(HttpServletRequest request HttpServletResponse response)
{
//handling all request and responses
}
_jspservice()la mรฉthode est invoquรฉe par le conteneur pour toutes les requรชtes รฉmises par la page JSP au cours de son cycle de vie- Pour cette phase, il doit passer par toutes les phases ci-dessus et seule la mรฉthode de service peut alors รชtre invoquรฉe.
- Il transmet les objets de requรชte et de rรฉponse
- Cette mรฉthode ne peut pas รชtre remplacรฉe
- La mรฉthode est prรฉsentรฉe ci-dessus : elle est responsable de la gรฉnรฉration de toutes les mรฉthodes HTTP, c'est-ร -dire GET, POST, etc.
7) Dรฉtruire
public void _jspdestroy()
{
//all clean up code
}
_jspdestroy()la mรฉthode est รฉgalement invoquรฉe par le conteneur- Cette mรฉthode est appelรฉe lorsque le conteneur dรฉcide qu'il n'a plus besoin de l'instance de servlet pour rรฉpondre aux demandes.
- Lorsque l'appel ร la mรฉthode destroy est effectuรฉ, le servlet est prรชt pour un garbage collection
- C'est la fin du cycle de vie.
- Nous pouvons passer outre
jspdestroy()mรฉthode lorsque nous effectuons un nettoyage tel que la libรฉration des connexions ร la base de donnรฉes ou la fermeture des fichiers ouverts.



