JSP-Lebenszyklus

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.

JSP-Lebenszyklus

Die folgenden Schritte erläutern den Lebenszyklus von JSP:

  1. Übersetzung der JSP-Seite
  2. Kompilierung der JSP-Seite (Kompilierung der JSP-Seite in _jsp.java)
  3. Klassenladen (_jsp.java wird in die Klassendatei _jsp.class konvertiert)
  4. Instanziierung (Objekt des generierten Servlets wird erstellt)
  5. Initialisierung(_jspinit() Methode wird vom Container aufgerufen)
  6. Anforderungsverarbeitung (_jspservice() Methode wird vom Container aufgerufen)
  7. 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.

JSP-Lebenszyklus

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:

JSP-Lebenszyklus

  • 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() und destroy() 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.