Cycle de vie des JSP


La clé pour comprendre les fonctions sous-jacentes de JSP est de comprendre le cycle de vie auquel elles adhèrent.

Le cycle de vie JSP est l'ensemble du processus depuis la création jusqu'à la destruction, similaire au cycle de vie des servlets. La différence est que le cycle de vie JSP inclut également la compilation des fichiers JSP en servlets.

Voici les étapes par lesquelles le cycle de vie JSP est passé :

  • Phase de compilation :

    Compilation du conteneur de servlets fichier source du servlet, générer la classe de servlet

  • Phase d'initialisation :

    Charger la classe de servlet correspondant à JSP, créer son instance, et appeler son initialisation méthode

  • Phase d'exécution :

    Appeler la méthode de service de l'instance de servlet correspondant à JSP

  • Phase de destruction :

    Appelez la méthode de destruction de l'instance de servlet correspondant à la JSP, puis détruisez l'instance de servlet

Evidemment, la Cycle de vie JSP Les quatre étapes principales sont très similaires au cycle de vie des servlets, comme indiqué ci-dessous :

jsp_life_cycle.jpg


Compilation JSP

Lorsque le navigateur demande une page JSP, le moteur JSP va d'abord vérifier si ce fichier doit être compilé. Si ce fichier n'a pas été compilé, ou a été modifié depuis la dernière compilation, compilez le fichier JSP.

Le processus de compilation comprend trois étapes :

  • Analyser le fichier JSP.

  • Convertissez les fichiers JSP en servlets.

  • Compilez la servlet.


Initialisation JSP

Une fois que le conteneur a chargé le fichier JSP, il appelle la méthode jspInit() avant de fournir des services à la requête. Si vous devez effectuer des tâches d'initialisation JSP personnalisées, remplacez simplement la méthode jspInit(), comme ceci :

public void jspInit(){
  // 初始化代码
}

De manière générale, le programme n'est initialisé qu'une seule fois, et il en va de même pour les servlets. Normalement, vous pouvez initialiser la connexion à la base de données, ouvrir le fichier et créer la table de requête dans la méthode jspInit().


Exécution du JSP

Cette phase décrit toutes les interactions liées aux requêtes dans le cycle de vie du JSP jusqu'à sa destruction.

Une fois l'initialisation de la page Web JSP terminée, le moteur JSP appellera la méthode _jspService(). La méthode

_jspService() nécessite un objet HttpServletRequest et un objet HttpServletResponse comme paramètres, comme ceci : la méthode

void _jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // 服务端处理代码
}

_jspService() est appelée une fois dans chaque requête et est chargée de générer le correspondant réponse, et il est également responsable de générer des réponses aux 7 méthodes HTTP, telles que GET, POST, DELETE, etc.


Nettoyage JSP

La phase de destruction du cycle de vie JSP décrit ce qui se passe lorsqu'une page Web JSP est supprimée du conteneur.

La méthode jspDestroy() dans JSP est équivalente à la méthode de destruction dans servlet. Remplacez la méthode jspDestroy() lorsque vous devez effectuer un travail de nettoyage, comme libérer la connexion à la base de données ou fermer le dossier, etc. Le format de la méthode

jspDestroy() est le suivant :

public void jspDestroy()
{
   // 清理代码
}

instance

L'exemple de code de cycle de vie JSP est le suivant :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<title>life.jsp</title>
</head>
<body>

<%! 
  private int initVar=0;
  private int serviceVar=0;
  private int destroyVar=0;
%>
  
<%!
  public void jspInit(){
    initVar++;
    System.out.println("jspInit(): JSP被初始化了"+initVar+"次");
  }
  public void jspDestroy(){
    destroyVar++;
    System.out.println("jspDestroy(): JSP被销毁了"+destroyVar+"次");
  }
%>

<%
  serviceVar++;
  System.out.println("_jspService(): JSP共响应了"+serviceVar+"次请求");

  String content1="初始化次数 : "+initVar;
  String content2="响应客户请求次数 : "+serviceVar;
  String content3="销毁次数 : "+destroyVar;
%>
<h1>php中文网 JSP 测试实例</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>

</body>
</html>

Le navigateur ouvre la page, le résultat de sortie est :

E80496E2-35DF-439F-8A43-6376D92DFA45.jpg