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>
Explication du code pour Demo.jsp
Ligne de code 1: balise de début html
Ligne de code 2: Balise de tête
Ligne de code 3 – 4: Balise de titre, c'est-à-dire Démo JSP et balise de fermeture
Ligne de code 5 – 6: Balise de scriptlet dans laquelle initialiser la variable démo
Ligne de code 7 – 8: Dans la balise body, un texte à imprimer dans la sortie (le nombre est : )
Ligne de code 9 : Balise de script où l'on essaie d'imprimer la variable demovar avec une valeur incrémentée
Ligne de code 10 à 11 : Balises corps et HTML fermées
La page de démonstration JSP est convertie en servlet demo_jsp dans le code ci-dessous.
Explication du code pour Demo_jsp.java
Ligne de code 1: La classe servlet demo_jsp étend la classe parent HttpServlet
Ligne de code 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
Ligne de code 4: Méthode d'ouverture
Ligne de code 5: Appel de la méthode getWriter()
de l'objet de réponse pour obtenir PrintWriterobject (imprime la représentation formatée des objets sur le flux de sortie de texte)
Ligne de code 6 : Appel de la méthode setContentType de l'objet de réponse pour définir le type de contenu
Ligne de code 7: En utilisant write()
méthode de l'objet PrintWriter essayant d'analyser le HTML
Ligne de code 8: Initialisation de la variable demovar à 0
Ligne de code 9: Appel write()
méthode de l'objet PrintWriter pour analyser le texte
Ligne de code 10: Appel print()
méthode de l'objet PrintWriter pour incrémenter la variable demovar de 0+1=1. Par conséquent, la sortie sera 1
Ligne de code 11: En utilisant write()
méthode de l'objet PrintWriter essayant d'analyser le 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()
et mesdestroy()
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.