JSP-Lebenszyklus
Was ist JSP LifeCycle?
Der JSP-Lebenszyklus ist als Übersetzung einer JSP-Seite in ein Servlet definiert, da eine JSP-Seite zunächst in ein Servlet konvertiert werden muss, um die Serviceanforderungen verarbeiten zu können. Der Lebenszyklus beginnt mit der Erstellung von JSP und endet mit dessen Auflösung.
Verschiedene Phasen des JSP-Lebenszyklus
Wenn der Browser nach einer JSP fragt, prüft die JSP-Engine zunächst, ob die Seite kompiliert werden muss. Wenn die JSP zuletzt kompiliert wurde oder die letzte Änderung in JSP vorgenommen wurde, kompiliert die JSP-Engine die Seite.
Der Kompilierungsprozess der 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.
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 (Objekt des generierten Servlets wird erstellt)
- Initialisierung(
_jspinit()
Methode wird vom Container aufgerufen) - Anforderungsverarbeitung (
_jspservice()
Methode wird vom Container aufgerufen) - Zerstören (
_jspDestroy()
vom Container aufgerufene Methode)
Lassen Sie uns die oben genannten Punkte detaillierter zusammenfassen:
1) Übersetzung der JSP-Seite:
A Java Die Servlet-Datei wird aus einer JSP-Quelldatei generiert. Dies ist der erste Schritt des JSP-Lebenszyklus. In der Übersetzungsphase validiert der Container die syntaktische Korrektheit der JSP-Seiten- und Tag-Dateien.
- Der JSP-Container interpretiert die Standardanweisungen und -aktionen sowie die benutzerdefinierten Aktionen, die auf Tag-Bibliotheken verweisen (sie sind alle Teil der JSP-Seite und werden im späteren Abschnitt erläutert), die auf dieser JSP-Seite verwendet werden.
- In der obigen Bildbeschreibung wird im ersten Schritt demo.jsp in demo_jsp.java übersetzt
- Nehmen wir ein Beispiel für „demo.jsp“ wie unten gezeigt:
Demo.jsp
<html> <head> <title>Demo JSP</title> </head> <% int demvar=0;%> <body> Count is: <% Out.println(demovar++); %> <body> </html>
Code-Erklärung für Demo.jsp
Codezeile 1: HTML-Start-Tag
Codezeile 2: Kopf-Tag
Codezeile 3 – 4: Titel-Tag, d. h. Demo-JSP und schließendes Head-Tag
Codezeile 5 – 6: Scriptlet-Tag, in dem die Variable Demo initialisiert wird
Codezeile 7 – 8: Im Body-Tag ein Text, der in der Ausgabe gedruckt werden soll (Anzahl ist: )
Codezeile 9: Scriptet-Tag, bei dem versucht wird, die Variable demovar mit inkrementiertem Wert zu drucken
Codezeile 10 – 11: Body- und HTML-Tags geschlossen
Die Demo-JSP-Seite wird im folgenden Code in das Servlet demo_jsp konvertiert.
Code-Erklärung für Demo_jsp.java
Codezeile 1: Die Servlet-Klasse demo_jsp erweitert die übergeordnete Klasse HttpServlet
Codezeile 2 – 3: Überschreiben der Dienstmethode von JSP, dh _jspservice, deren Parameter die Objekte HttpServletRequest und HttpServletResponse sind
Codezeile 4: Öffnungsmethode
Codezeile 5: Aufruf der Methode getWriter()
des Antwortobjekts, um das PrintWrite-Objekt abzurufen (druckt formatierte Darstellungen von Objekten in den Textausgabestrom)
Codezeile 6: Aufruf der setContentType-Methode des Antwortobjekts, um den Inhaltstyp festzulegen
Codezeile 7: Verwenden write()
Methode des PrintWriter-Objekts, das versucht, HTML zu analysieren
Codezeile 8: Demovar-Variable wird auf 0 initialisiert
Codezeile 9: Anrufen write()
Methode des PrintWriter-Objekts zum Parsen des Textes
Codezeile 10: Anrufen print()
Methode des PrintWriter-Objekts, um die Variable demovar von 0+1=1 zu erhöhen. Daher wird die Ausgabe 1 sein
Codezeile 11: Verwenden write()
Methode des PrintWriter-Objekts, das versucht, HTML zu analysieren
Ausgang:
- Hier können Sie im Screenshot sehen, dass theOutput 1 ist, da demvar auf 0 initialisiert und dann auf 0+1=1 erhöht wird
Im obigen Beispiel ist
- demo.jsp ist eine JSP, bei der eine Variable initialisiert und erhöht wird. Diese JSP wird in das Servlet (demo_jsp.class) konvertiert, wobei die JSP-Engine die JSP-Seite lädt und in Servlet-Inhalt konvertiert.
- Bei der Konvertierung wird der gesamte Vorlagentext umgewandelt in
println()
Aussagen und alle JSP-Elemente werden konvertiert zu Java Code.
So wird eine einfache JSP-Seite in eine Servlet-Klasse übersetzt.
2) Kompilierung der JSP-Seite
- Die generierte Java-Servlet-Datei wird in die Java-Servlet-Klasse kompiliert
- Die Übersetzung der Java-Quellseite in ihre Implementierungsklasse kann jederzeit zwischen der Bereitstellung der JSP-Seite im Container und der Verarbeitung der JSP-Seite erfolgen.
- In der obigen Bildbeschreibung wird demo_jsp.java zu einer Klassendatei demo_jsp.class kompiliert
3) Klassenladen
- Die aus der JSP-Quelle geladene Servlet-Klasse wird jetzt in den Container geladen
4) Instanziierung
- In diesem Schritt wird das Objekt bzw. die Instanz der Klasse generiert.
- Der Container verwaltet eine oder mehrere Instanzen dieser Klasse als Antwort auf Anfragen und andere Ereignisse. Normalerweise wird ein JSP-Container mithilfe eines Servlet-Containers erstellt. Ein JSP-Container ist eine Erweiterung des Servlet-Containers, da sowohl der Container JSP als auch Servlet unterstützt.
- Eine JSPPage-Schnittstelle, die vom Container bereitgestellt wird, bietet
init()
unddestroy()
Methoden. - Es gibt eine Schnittstelle HttpJSPPage, die HTTP-Anfragen verarbeitet, und sie enthält auch die Servicemethode.
5) Initialisierung
public void jspInit() { //initializing the code }
_jspinit()
Die Methode initiiert die aus JSP generierte Servlet-Instanz, die in dieser Phase vom Container aufgerufen wird.- Sobald die Instanz erstellt wurde, wird die Init-Methode unmittelbar danach aufgerufen
- Es wird nur einmal während eines JSP-Lebenszyklus aufgerufen, die Methode zur Initialisierung wird wie oben gezeigt deklariert
6) Anfragebearbeitung
void _jspservice(HttpServletRequest request HttpServletResponse response) { //handling all request and responses }
_jspservice()
Die Methode wird vom Container für alle Anfragen aufgerufen, die von der JSP-Seite während ihres Lebenszyklus gestellt werden.- In dieser Phase muss es alle oben genannten Phasen durchlaufen und dann kann nur die Servicemethode aufgerufen werden.
- Es übergibt Anforderungs- und Antwortobjekte
- Diese Methode kann nicht überschrieben werden
- Die Methode wird oben angezeigt: Sie ist für die Generierung aller HTTP-Methoden, d. h. GET, POST usw., verantwortlich.
7) Zerstören
public void _jspdestroy() { //all clean up code }
_jspdestroy()
Methode wird auch vom Container aufgerufen- Diese Methode wird aufgerufen, wenn der Container entscheidet, dass er die Servlet-Instanz nicht mehr zur Bearbeitung von Anforderungen benötigt.
- Wenn dann die Methode destroy aufgerufen wird, ist das Servlet für eine Garbage Collection bereit
- Dies ist das Ende des Lebenszyklus.
- Wir können außer Kraft setzen
jspdestroy()
Methode, wenn wir Bereinigungen durchführen, z. B. Datenbankverbindungen freigeben oder geöffnete Dateien schließen.