Der Schlüssel zum Verständnis der zugrunde liegenden Funktionalität von JSPs liegt im Verständnis der Lebenszyklen, denen sie folgen.
Der JSP-Lebenszyklus ist der gesamte Prozess von der Erstellung bis zur Zerstörung, der dem Servlet-Lebenszyklus ähnelt. Der Unterschied besteht darin, dass der JSP-Lebenszyklus auch das Kompilieren von JSP-Dateien in Servlets umfasst.
Im Folgenden sind die Phasen aufgeführt, die der JSP-Lebenszyklus durchläuft:
Kompilierungsphase:
Der Servlet-Container kompiliert die Servlet-Quelldatei und generiert die Servlet-Klasse
Initialisierungsphase:
Laden Sie die der JSP entsprechende Servlet-Klasse, erstellen Sie ihre Instanz und rufen Sie ihre Initialisierungsmethode auf
Ausführungsphase:
Rufen Sie die Servicemethode der Servlet-Instanz auf, die der JSP entspricht
Zerstörungsphase:
Rufen Sie die Zerstörungsmethode der Servlet-Instanz auf, die der JSP entspricht, und zerstören Sie dann die Servlet-Instanz
Offensichtlich sind die vier Hauptphasen des JSP-Lebenszyklus dem Servlet-Lebenszyklus sehr ähnlich, wie unten gezeigt:
Wenn der Browser eine JSP-Seite anfordert, prüft die JSP-Engine zunächst, ob die Datei kompiliert werden muss. Wenn diese Datei nicht kompiliert wurde oder seit der letzten Kompilierung geändert wurde, kompilieren Sie die JSP-Datei.
Der Kompilierungsprozess besteht aus drei Schritten:
JSP-Dateien analysieren.
Konvertieren Sie JSP-Dateien in Servlets.
Kompilieren Sie das Servlet.
Nachdem der Container die JSP-Datei geladen hat, ruft er die Methode jspInit() auf, bevor er einen Dienst für die Anforderung bereitstellt. Wenn Sie benutzerdefinierte JSP-Initialisierungsaufgaben ausführen müssen, überschreiben Sie einfach die Methode jspInit() wie folgt:
public void jspInit(){ // Initialisierungscode}
Im Allgemeinen wird das Programm nur einmal initialisiert, und das Gleiche gilt für Servlets. Normalerweise können Sie die Datenbankverbindung initialisieren, die Datei öffnen und die Abfragetabelle in der Methode jspInit() erstellen.
Diese Phase beschreibt alle anforderungsbezogenen Interaktionen im JSP-Lebenszyklus bis zu seiner Zerstörung.
Wenn die JSP-Webseite die Initialisierung abschließt, ruft die JSP-Engine die Methode _jspService() auf.
Die _jspService()-Methode erfordert ein HttpServletRequest-Objekt und ein HttpServletResponse-Objekt als Parameter, wie die folgenden:
void _jspService(HttpServletRequest request,HttpServletResponse Response){ // Serverseitiger Verarbeitungscode}
Die Methode _jspService() wird in jeder Anfrage einmal aufgerufen und ist für die Generierung der entsprechenden Antwort verantwortlich. Außerdem ist sie für die Generierung von Antworten für alle 7 HTTP-Methoden wie GET, POST, DELETE usw. verantwortlich.
Die Zerstörungsphase des JSP-Lebenszyklus beschreibt, was passiert, wenn eine JSP-Webseite aus dem Container entfernt wird.
Die Methode jspDestroy() in JSP entspricht der Zerstörungsmethode im Servlet. Überschreiben Sie die Methode jspDestroy(), wenn Sie Bereinigungsarbeiten durchführen müssen, z. B. das Freigeben der Datenbankverbindung oder das Schließen des Ordners usw.
Das Format der jspDestroy()-Methode ist wie folgt:
public void jspDestroy(){ // Code bereinigen}
Ein Beispiel für den JSP-Lebenszykluscode lautet wie folgt:
<%@ 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 destroyVar=0;%> <%! System.out.println("jspInit(): JSP wurde "+initVar+" mal initialisiert"); } public void jspDestroy(){ destroyVar++; System.out.println("jspDestroy(): JSP wurde zerstört"+destroyVar+ "times"); }%><% serviceVar++; System.out.println("_jspService(): JSP hat auf insgesamt „+serviceVar+“-Anfragen geantwortet“); String content1="Anzahl der Initialisierungen: „+initVar; String content2="Anzahl der Antworten auf Kundenanfragen: „+serviceVar; String content3="Anzahl der Zerstörungen: " +destroyVar;%> <h1>W3cschool Tutorial JSP-Testbeispiel</h1><p><%=content1 %></p><p><%=content2 %></p><p><%=content3 %></p></body></html>