Articles

JSP Life cycle Events explained

JSPs sind eigentlich Servlets, wie Sie bereits gesehen haben. Der Container konvertiert alle JSP-Dateien in Servlets, bevor sie ausgeführt werden. JSPs bieten nur eine einfache Möglichkeit, Komponenten zu erstellen, die Nicht-Java-Code enthalten.

Sobald eine JSP-Seite erstellt und bereitgestellt wurde, führt der Container einige Lebenszyklusereignisse aus, einschließlich des Aufrufs einiger seiner Methoden, die Servlet-Lebenszyklusereignissen ähneln.

  1. JSP-Seitenübersetzung (Validierungs-, Übersetzungs-, Kompilierungsphasen)
  2. Klasse laden
  3. Instanziieren
  4. jspInit-Methode heißt
  5. _jspService-Methode heißt
  6. jspDestroy-Methode heißt

JSP-Seitenübersetzung (Validierungs-, Übersetzungs-, Kompilierungsphasen)

Die Validierung wird vor der Übersetzung durchgeführt. Die Syntaxprüfung erfolgt und alle Verweise auf Tag-Bibliotheken, Aktionen und EL-Funktionen in der JSP werden validiert, um sicherzustellen, dass sie vorhanden sind und auf die Seite zugegriffen werden kann.

Vor der Validierung wird die JSP-Seite in eine XML-Ansicht konvertiert, und diese XML-Ansicht wird dann validiert und übersetzt.

Die anfängliche JSP-Eingabeseite wird in Servlet-Quellcode übersetzt. Dabei werden die print-Anweisungen für jede Ihrer Nicht-Java-Zeilen in die JSP geschrieben. Dieses generierte Servlet sollte HttpJspPage oder sein übergeordnetes JspPage implementieren, je nachdem, ob die Umgebung HTTP-basiert ist oder nicht. Verwandter Blog: Angular Training in Chennai

  • Ein Anbieter verfügt normalerweise über ein spezialisiertes JSP-Basisservlet, das alle erforderlichen Klassen oder Schnittstellen erweitert und implementiert. In Tomcat wird dies org genannt.Apache.Jasper.Laufzeit.In: HttpJspBase. HttpJspBase erweitert HttpServlet und GenericServlet und implementiert HttpJspPage, JspPage, Serializable, Servlet, ServletConfig.

Der Servlet-Quellcode wird dann in eine Servlet-Klassendatei kompiliert.

Ausgänge

  • Innerhalb der Translationsphase gibt es zwei Ausgänge.
  • Die erste ist eine Zwischenausgabe: eine Java-Quelldatei für ein Servlet.
  • Die zweite ist die kompilierte Klassendatei aus der Servlet-Quelle.
  • Die Klassendatei wird für die zukünftige Verwendung beibehalten, und die meisten JSP-Container behalten oder geben Ihnen möglicherweise eine Option, mit der Sie die Servlet-Quelle für Debugging-Zwecke beibehalten können.
  • In Tomcat werden die generierte Servlet-Java-Quelle und die kompilierte Klasse während der JSP-Übersetzung standardmäßig im Verzeichnis <Tomcat-Installation-Directory>/work/Catalina/localhost/<context- directory>/org/apache/jsp .

Timing

  • Obwohl ein JSP-Container über einen Ermessensspielraum verfügt, wann die Übersetzung erfolgt, wird die JSP standardmäßig (in den meisten Fällen) in ein Servlet kompiliert und dann beim ersten Zugriff geladen.
  • Dies kann zu einer kleinen Verzögerung bei der ersten Anforderung führen, bei nachfolgenden Anforderungen tritt jedoch keine Verzögerung auf.
  • In bestimmten Anwendungsservern können Sie JSPs auch vorkompilieren, bevor Sie sie in JARs einfügen.

Fehler

  • Wenn eine Seite nicht übersetzt werden kann, sollte eine HTTP-Anforderung für die Seite zu einem Statuscode 500 (Serverfehler) führen, der in der HTTP-Antwort zurückgemeldet wird.

Load Class

  • Die generierte Servlet-Klasse wird mit dem Klassenlader der Anwendung geladen.

Instanziieren

  • Eine Instanz der Servlet-Klasse wird erstellt.
  • Für jede Servlet-Mapping-Deklaration der JSP im Web.xml (ähnlich wie Servlets) wird eine neue Instanz zusätzlich zur Standard-JSP-Dateiinstanz erstellt. Wenn ich eine JSP-Seite im Kontextstammverzeichnis habe und dieselbe JSP-Seite auch im Web registriert habe.xml, ich werde zwei Instanzen dieser JSP erstellt haben.

Die jspInit-Methode heißt

  • Sie können diese Methode überschreiben.

Die _jspService-Methode wird aufgerufen

  • Wenn Anforderungen gestellt werden, ruft der Container die service(request, response) -Methode des generierten Servlets auf, die die Methode _jspService() aufrufen und die Anforderungs- und Antwortparameter übergeben soll.
  • Wir sollten _jspService() von unserer JSP-Seite nicht überschreiben. Diese Methode stellt Ihre Seitenquelle in Java-Codeform dar — es liegt an den Seitengeneratoren des Containers, diese Methode für jede einzelne JSP zu implementieren.
  • Die JSP-Spezifikation ist jedoch flexibel genug, um jedes Anforderungs- / Antwortprotokoll aufzunehmen, das Sie implementieren möchten, indem Sie diese Methode überschreiben. und dafür müssen Sie nur die _jspService-Methode überschreiben.

Die jspDestroy-Methode wird aufgerufen

  • Wird aufgerufen, bevor die Instanz des JSP-Servlets ungültig gemacht und Müll gesammelt wird

Wichtige Punkte zu beachten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.