JSP-Lebenszyklus: Phasen & Diagramm erklärt
⚡ Intelligente Zusammenfassung
Der JSP-Lebenszyklus beschreibt, wie ein Container eine Seite in ein Servlet übersetzt, sie kompiliert, die Klasse lädt, eine Instanz erstellt, diese initialisiert, jede Anfrage über die generierte Service-Methode bedient und sie schließlich zerstört.

Was ist der JSP-Lebenszyklus?
JSP-Lebenszyklus Die Umwandlung einer JSP-Seite in ein Servlet wird als deren Übersetzung definiert, da eine JSP-Seite in ein Servlet konvertiert werden muss, bevor sie Serviceanfragen verarbeiten kann. Der Lebenszyklus beginnt mit der Erstellung der JSP-Seite und endet mit der Zerstörung der daraus generierten Servlet-Instanz.
Da es sich bei der generierten Klasse um ein gewöhnliches Servlet handelt, gilt alles, was Sie bereits über Servlets wissen.tracDas gilt weiterhin. Java Der vom Container generierte Code wird tatsächlich ausgeführt; die JSP-Datei ist lediglich der von Ihnen zu pflegende Quellcode.
Verschiedene Phasen des JSP-Lebenszyklus
Wenn der Browser eine JSP-Datei anfordert, prüft die JSP-Engine zunächst, ob die Seite kompiliert werden muss. Falls die JSP-Datei noch nie kompiliert wurde oder seit der letzten Kompilierung geändert wurde, kompiliert die JSP-Engine die Seite.
Der Kompilierungsprozess einer JSP-Seite umfasst drei Schritte:
- Parsen von JSP
- JSP in Servlet umwandeln
- Kompilieren des Servlets
JSP-Lebenszyklusdiagramm
Der JSP-Lebenszyklus ist im folgenden Diagramm dargestellt, welches traces ist eine einzelne Seite von der Quelldatei bis hin zur Klasse, die der Container ausführt.
Die folgenden Schritte erläutern den Lebenszyklus von JSP:
- Übersetzung der JSP-Seite
- Kompilierung der JSP-Seite (Kompilierung der JSP-Seite in _jsp.java)
- Klassenladen (_jsp.java wird in die Klassendatei _jsp.class konvertiert)
- Instanziierung (ein Objekt des generierten Servlets wird erstellt)
- Initialisierung (die jspInit()-Methode wird vom Container aufgerufen)
- Anfrageverarbeitung (die Methode _jspService() wird vom Container aufgerufen)
- Zerstören (die Methode jspDestroy() wird vom Container aufgerufen)
Phasen des JSP-Lebenszyklus erklärt
Lassen Sie uns jeden der oben genannten Punkte genauer betrachten.
1) Übersetzung der JSP-Seite:
A Java Aus einer JSP-Quelldatei wird eine Servlet-Datei generiert. Dies ist der erste Schritt im JSP-Lebenszyklus. In der Übersetzungsphase prüft der Container die syntaktische Korrektheit der JSP-Seite und der zugehörigen Tag-Dateien.
- Der JSP-Container interpretiert die Standarddirektiven und -aktionen sowie die benutzerdefinierten Aktionen, die auf Tag-Bibliotheken verweisen (sie sind alle Teil der JSP-Seite und werden im Abschnitt „…“ behandelt). JSP-Elemente Tutorial), das auf dieser JSP-Seite verwendet wird.
- In der obigen bildlichen Darstellung wird demo.jsp im ersten Schritt in demo_jsp.java übersetzt.
Nehmen wir als Beispiel die Datei „demo.jsp“, wie unten dargestellt:
Demo.jsp
<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>
Anmerkung zum obigen Eintrag: Es wird exakt so wiedergegeben, wie es veröffentlicht wurde, damit es mit dem nachfolgenden generierten Servlet-Screenshot übereinstimmt. Zwei Rechtschreibfehler führen bei unveränderter Kopie zu einem Kompilierungsfehler – die Variable ist wie folgt deklariert: demvar aber gedruckt als demovarund das implizite Ausgabeobjekt ist out in Kleinbuchstaben, nicht OutKorrigieren Sie beides, bevor Sie die Seite selbst ausführen.
Code Erläuterung zu Demo.jsp
Code Zeile 1: HTML-Starttag
Code Zeile 2: Kopf-Etikett
Code Zeile 3–4: Titel-Tag, z. B. „Demo JSP“, und schließender Head-Tag
Code Zeile 5 – 6: Scriptlet-Tag, in dem die Variable demo initialisiert wird
Code Zeile 7 – 8: Im Body-Tag ein Text, der in der Ausgabe gedruckt werden soll (Anzahl ist: )
Code Zeile 9: Scriptlet-Tag, in dem wir versuchen, die Variable demovar mit ihrem inkrementierten Wert auszugeben.
Code Zeile 10 – 11: Body- und HTML-Tags geschlossen
Die Demo-JSP-Seite wird in das im folgenden Code gezeigte demo_jsp-Servlet umgewandelt.
Code Erläuterung zu Demo_jsp.java
Code Zeile 1: Die Servlet-Klasse demo_jsp erweitert die Elternklasse HttpServlet.
Code Zeile 2–3: Überschreiben der Service-Methode der JSP, d. h. _jspService, die HttpServletRequest- und HttpServletResponse-Objekte als Parameter hat.
Code Zeile 4: Öffnungsmethode
Code Zeile 5: Aufruf der Methode getWriter() des Antwortobjekts, um eine Ausgabe zu erhaltenWriter Objekt (gibt eine formatierte Darstellung von Objekten in einem Textausgabestrom aus)
Code Zeile 6: Aufruf der setContentType-Methode des Antwortobjekts zum Festlegen des Inhaltstyps
Code Zeile 7: Verwendung der write()-Methode der Print-KlasseWriter Objekt zum Parsen von HTML
Code Zeile 8: Initialisierung der Demovar-Variablen mit 0
Code Zeile 9: Aufruf der write()-Methode der Print-KlasseWriter Objekt zum Parsen des Textes
Code Zeile 10: Aufruf der print()-Methode der Print-KlasseWriter Das Objekt erhöht die Variable demovar von 0 + 1 = 1. Daher ist die Ausgabe 1.
Code Zeile 11: Verwendung der write()-Methode der Print-KlasseWriter Objekt zum Parsen von HTML
Ausgang:
Anschließend wird im Browser der Zähler angezeigt, wie der untenstehende Screenshot zeigt.
- Hier sieht man im Screenshot, dass die Ausgabe 1 ist, da demvar mit 0 initialisiert und dann auf 0 + 1 = 1 inkrementiert wird.
Im obigen Beispiel ist
- demo.jsp ist eine JSP-Seite, in der eine Variable initialisiert und inkrementiert wird. Diese JSP-Seite wird in ein Servlet (demo_jsp.class) umgewandelt, wobei die JSP-Engine die JSP-Seite lädt und in Servlet-Inhalt umwandelt.
- Bei der Konvertierung wird der gesamte Vorlagentext in println()-Anweisungen umgewandelt und alle JSP-Elemente werden in … konvertiert. Java Code.
So wird eine einfache JSP-Seite in eine Servlet-Klasse übersetzt.
2) Kompilierung der JSP-Seite
- Das erzeugte Java Die Servlet-Datei wird kompiliert in eine Java Servlet-Klasse
- Die Übersetzung der Java Die Übergabe der Quellseite an ihre Implementierungsklasse kann jederzeit zwischen dem Deployment der JSP-Seite im Container und der Verarbeitung der JSP-Seite erfolgen.
- In der obigen bildlichen Darstellung wird demo_jsp.java in eine Klassendatei demo_jsp.class kompiliert.
- Auf Apache Tomcat werden beide Artefakte im Arbeitsverzeichnis des Servers geschrieben.
work/Catalina/localhost/<app>/org/apache/jspDas ist der erste Ort, an dem man nachsehen sollte, wenn ein Übersetzungsfehler diagnostiziert werden muss.
3) Klassenladen
- Die aus dem JSP-Quellcode generierte Servlet-Klasse wird nun in den Container geladen.
4) Instanziierung
- In diesem Schritt wird das Objekt, also die Instanz der Klasse, erzeugt.
- Der Container verwaltet eine oder mehrere Instanzen dieser Klasse als Reaktion auf Anfragen und andere Ereignisse. Typischerweise wird ein JSP-Container mithilfe eines Servlet-Containers erstellt. Ein JSP-Container ist eine Erweiterung eines Servlet-Containers, da beide Container JSP und Servlets unterstützen.
- Die vom Container bereitgestellte JspPage-Schnittstelle deklariert die Methoden jspInit() und jspDestroy().
- Es gibt eine Schnittstelle namens `HttpJspPage`, die HTTP-Anfragen verarbeitet und die zugehörige Service-Methode enthält. Ihre Signatur hängt vom Protokoll ab, weshalb der Container diese Methode generiert, anstatt den Seitenautor zur Deklaration aufzufordern.
5) Initialisierung
public void jspInit() { //initializing the code }
- Die Methode jspInit() initialisiert die aus der JSP generierte Servlet-Instanz und wird in dieser Phase vom Container aufgerufen.
- Sobald die Instanz erstellt ist, wird unmittelbar danach die init-Methode aufgerufen.
- Sie wird nur einmal während des Lebenszyklus einer JSP aufgerufen, und die Initialisierungsmethode wird wie oben gezeigt deklariert.
6) Anfragebearbeitung
void _jspservice(HttpServletRequest request HttpServletResponse response) { //handling all request and responses }
- Die Methode _jspService() wird vom Container für alle Anfragen aufgerufen, die von der JSP-Seite während ihres Lebenszyklus ausgelöst werden.
- Für diese Phase muss die Seite alle oben genannten Phasen durchlaufen, erst dann kann die Servicemethode aufgerufen werden.
- Es übergibt die Anfrage- und Antwortobjekte.
- Diese Methode kann nicht überschrieben werden, da sie vom Container während der Übersetzung geschrieben wird.
- Die Methode ist oben dargestellt. Sie ist für die Verarbeitung aller HTTP-Methoden zuständig, d. h. GET, POST und alle anderen.
7) Zerstören
public void _jspdestroy() { //all clean up code }
- Die Methode jspDestroy() wird ebenfalls vom Container aufgerufen.
- Diese Methode wird aufgerufen, wenn der Container entscheidet, dass er die Servlet-Instanz nicht mehr zur Bearbeitung von Anfragen benötigt.
- Sobald die destroy-Methode aufgerufen wurde, ist das Servlet bereit für die Garbage Collection.
- Dies ist das Ende des Lebenszyklus.
- Wir können jspDestroy() überschreiben, wenn wir Aufräumarbeiten durchführen, wie z. B. das Freigeben von Datenbankverbindungen oder das Schließen geöffneter Dateien.
Eine Anmerkung zur Namensgebung, die es wert ist, beibehalten zu werden: Ab Jakarta EE 9 leben diese Typen in der jakarta.servlet.jsp Paket statt javax.servlet.jspÄltere Importe müssen daher aktualisiert werden, wenn eine Anwendung auf einen aktuellen Server verschoben wird.



