JSP-Lebenszyklus: Einführung, Phasen, Methoden

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.

Lernen wir die verschiedenen Phasen des JSP-Lebenszyklus kennen

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

Der JSP-Lebenszyklus ist im folgenden Diagramm dargestellt.

JSP-Lebenszyklus

Following Schritte erklären den JSP-Lebenszyklus:

  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 (Methode _jspinit() wird vom Container aufgerufen)
  6. Anforderungsverarbeitung (Methode _jspservice() wird vom Container aufgerufen)
  7. Destroy (vom Container aufgerufene _jspDestroy()-Methode)

Lassen Sie uns die oben genannten Punkte detaillierter zusammenfassen:

  1. Übersetzung der JSP-Seite:

A Javac 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.

  • The JSP container interprets the standard directives and actions, and the custom actions referencing tag libraries (they are all part of JSP page and will be discussed in the later section) used in this JSP page.
  • 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 PrintWriteobject abzurufen (druckt formatierte Darstellungen von Objekten in den Textausgabestream)

Codezeile 6: Aufruf der setContentType-Methode des Antwortobjekts, um den Inhaltstyp festzulegen

Codezeile 7: Die Methode write() des PrintWriter-Objekts wird verwendet, um HTML zu analysieren

Codezeile 8: Demovar-Variable wird auf 0 initialisiert

Codezeile 9: Aufruf der write()-Methode des PrintWriter-Objekts, um den Text zu analysieren

Codezeile 10: Aufruf der Methode print() des PrintWriter-Objekts, um die Variable demovar von 0+1=1 zu erhöhen. Daher ist die Ausgabe 1

Codezeile 11: Verwenden der write()-Methode des PrintWriter-Objekts, um 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 in println()-Anweisungen usw. konvertiert JSP-Elemente werden in Java-Code konvertiert.

So wird eine einfache JSP-Seite in eine Servlet-Klasse übersetzt.

  1. Zusammenstellung 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
  1. Klassenladen
  • Die aus der JSP-Quelle geladene Servlet-Klasse wird jetzt in den Container geladen
  1. 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 vom Container bereitgestellte JSPPage-Schnittstelle stellt die Methoden init() und destroy() bereit.
  • Es gibt eine Schnittstelle HttpJSPPage, die HTTP-Anfragen verarbeitet, und sie enthält auch die Servicemethode.
  1. Initialisierung
    public void jspInit()
    {
    	//initializing the code
    }
  • Die Methode _jspinit() initiiert die aus JSP generierte Servlet-Instanz und wird in dieser Phase vom Container aufgerufen.
  • 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
  1. Bearbeitung der Anfrage
    void _jspservice(HttpServletRequest request HttpServletResponse response)
    {
    	//handling all request and responses
    }
  • Die Methode _jspservice() wird vom Container für alle Anforderungen aufgerufen, die von der JSP-Seite während ihres Lebenszyklus ausgelöst 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 ist oben dargestellt: Sie ist für die Generierung aller HTTP-Methoden verantwortlich, d. h. eGET, POST usw.
  1. Zerstören
    public void _jspdestroy()
    {
                //all clean up code
    }
  • Die Methode _jspdestroy() 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 die Methode jspdestroy() überschreiben, wenn wir eine Bereinigung durchführen, z. B. das Freigeben von Datenbankverbindungen oder das Schließen geöffneter Dateien.