Servlet-Lebenszyklus: Erklärung

Servlets sind kleine Programme, die serverseitig ausgeführt werden und dynamische Webseiten erstellen. Servlets reagieren auf vom Benutzer gesendete Anfragen. In der MVC-Architektur fungieren Servlets als Controller. Der Controller verarbeitet und beantwortet Benutzeranfragen. Der Servlet-Lebenszyklus umfasst die folgenden Schritte:

  • Servlet-Klasse laden.
  • Erstellen Sie eine Servlet-Instanz.
  • Rufen Sie die Init-Methode auf.
  • Rufen Sie die Servicemethode auf.
  • Rufen Sie die Methode destroy auf.

Servlet-Lebenszyklus: Klassenladen

Der erste Schritt bei der Erstellung einer Servlet-Komponente besteht darin, die Servlet-Klassendatei in die JVM (Java Virtual Machine) des Webcontainers zu laden. Wenn web.xml ein erstmaliges Servlet mit einem Load-on-Startup-Element aufruft oder konfiguriert, wird dieser Schritt aufgerufen.

Servlet-Instanz erstellen

Erstellen Sie nach dem Laden der Servlet-Klasse in die JVM des Webcontainers eine Instanz dieser Klasse. Die Servlet-Spezifikation erstellt nur eine Servlet-Instanz für eine einzelne Definition im Bereitstellungsdeskriptor.

Die init()-Methode

Der Webcontainer initialisiert die im Bereitstellungsdeskriptor angegebenen Parameter. Ein Servlet wird zunächst in den Speicher geladen und ruft dabei die Methode init() auf. Die Syntax der init()-Methode sieht folgendermaßen aus:

[code lang="java"]
public void init () throws Servlet Exception {
//code
}
[/code]

Die service()-Methode

Nach der Initialisierung der Servlet-Komponente beginnt der Webcontainer mithilfe der Service-Methode mit dem Senden von Anforderungen an diese Komponente. Die Servicemethode verarbeitet die Anfrage. Der Webcontainer gibt eine eindeutige Anfrage und Antwort an die Dienstmethode aus. Die Syntax der service()-Methode:

[code lang="java"]
public void service (Servletrequest request, Servletresponse  response)
     throws ServletException, IOException {
}
[/code]

Wenn der Webcontainer die Methode service() aufruft, ruft er die auf doGet (), doPost (), doPut (), doDelete (), doTrace (), doOptions (), getLastModified () Methoden.

Der bekommen () Und doPost () werden am häufigsten bei jeder Serviceanfrage verwendet. Wir müssen überschreiben bekommen () Und doPost () Methoden abhängig von der Art der Anfrage.

Die doGet()-Methode: Wir verwenden die Methode doGet(), um eine bestimmte Datenmenge zu senden. Die Adressleiste zeigt die Daten an. Überschreiben Sie die doGet()-Methode je nach Art der Anfrage. Definieren Sie wie folgt:

[code lang="java"]
public void doGet (HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException{
//code
}
[/code]

Die doPost()-Methode: Senden Sie eine große Datenmenge mit der Methode doPost(). Bei Verwendung dieser Methode sind in der Adressleiste keine Daten sichtbar. Die doPost()-Methode sendet sichere Daten wie Passwörter. Überschreiben Sie die doPost()-Methode je nach Art der Anfrage. Definieren Sie wie folgt:

[code lang="java"]
public void doPost (HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException{
//code
}
[/code]

doDelete(): wird verwendet, um Dateien, Webseiten oder Dokumente vom Server zu löschen. Es wird der HTTP-Fehler „Bad Request“ zurückgegeben, wenn Anfragen falsch formatiert sind. Beispiel:

[code lang="java"]
 protected  void doDelete (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
 //code
}
[/code]

doPut(): Legt Dateien, Webseiten oder Dokumente zum Hochladen von Dateien auf dem Server ab. Wenn Anfragen falsch formatiert sind, wird ein HTTP-Fehler „Bad Request“ zurückgegeben. Beispiel:

[code lang="java"]
protected  void doPut (HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException{
  //code
}
 [/code]

doTrace(): Protokolle und Debugging. Außerdem wird die angeforderte Nachricht getestet. Es besteht keine Notwendigkeit, diese Methode zu überschreiben. Zum Beispiel:

[code lang="java"]
protected void doTrace(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException{
  //code
 }
             [/code]

doOptions(): Verarbeitet die OPTIONS-Anfrage. Es besteht keine Notwendigkeit, diese Methode zu überschreiben. Es ermittelt, welche HTTP-Methode vom Server unterstützt wird und gibt den richtigen Header zurück. Wenn Anfragen falsch formatiert sind, wird ein HTTP-Fehler „Bad Request“ zurückgegeben.
Zum Beispiel:

[code lang="java"]
protected void doOptions(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
 //code
 }
[/code]

getLastModified(): Gibt zurück, wann die Anfrage zuletzt geändert wurde. Es sollte eine GET-Anfrage überschreiben, um die Änderungszeit eines Objekts zurückzugeben.
Zum Beispiel:

[code lang="java"]
protected long getLastModified (HttpServletRequest request)
     throws ServletException, IOException{
                     //code
}  [/code]

Die destroy()-Methode

Wenn eine Webanwendung heruntergefahren wird, ruft der Webcontainer die Methode destroy auf. Die Methode destroy bereinigt alle Ressourcen, die das Servlet möglicherweise initialisiert hat. Beispiel für die Syntax einer destroy()-Methode:

[code lang="java"]
public  void destroy(){
//code
}
[/code]

Servlet-Lebenszyklus: Beispiel

Jetzt erstellen wir ein Servlet-Beispiel mit der Eclipse-IDE. Um eine Servlet-Anwendung zu erstellen, führen Sie die folgenden Schritte aus:

Umgebung verwendet:

JDK

Eclipse-IDE

Apache Tomcat-Server

Java-API

Öffnen Sie die Eclipse-IDE und gehen Sie zu Dateimenü -> Neu -> Dynamisches Webprojekt auswählen.
Beispiel für einen Servlet-Lebenszyklus

Geben Sie den Projektnamen ein. Klicken Nächste.

Klicke auf Generieren Sie den Bereitstellungsdeskriptor web.xml und klicken Beenden.

Klicken Sie unter dem Projekt auf Java-Ressourcen -> src auswählenklicken Sie mit der rechten Maustaste und wählen Sie „Neu->Paket“, um den Namen einzugeben javabeat.net.servlets
Servlet-Lebenszyklus Beispiel für ein neues Java-Paket

Klicken Sie nun auf das Paket javabeat.net.servlets Und Neu -> Servlet auswählen
Servlet-Lebenszyklus: Wählen Sie ein neues Servlet aus
Geben Sie den Klassennamen ein als ServletDemo und klicken Beenden.

Fügen Sie nun a hinzu servlet-api.jar mit den folgenden Schritten zu projizieren.

  • Klicken Sie mit der rechten Maustaste auf Projektname, wählen Sie -> Eigenschaften -> Java Build Path auswählen -> Klicken Fügen Sie externe JARs hinzu.
  • Wählen servlet-api.jar aus dem Apache Tomcat-Verzeichnis.
  • Schlag Offen und klicken OK.

Servlet-Lebenszyklus externe JARs hinzufügen

Fügen Sie den folgenden Inhalt zur ServletDemo.java hinzu:

[code lang="java"] package javabeat.net.servlets; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ServletDemo */ public class ServletDemo extends HttpServlet { /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println(" <head>"); out.println(" <title>SimpleServlet</title>"); out.println(" </head>"); out.println(" <body>"); out.println(" Hello, World"); out.println(" </body>"); out.println("</html>"); } } [/code]

Bearbeiten Sie die web.xml und fügen Sie den folgenden Inhalt hinzu:

[code lang="xml"] <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <servlet-name>ServletDemo</servlet-name> <servlet-class>javabeat.net.servlets.ServletDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletDemo</servlet-name> <url-pattern>/ServletDemo</url-pattern> </servlet-mapping> </web-app> [/code]

Wählen Sie die Klasse aus ServletDemo. Rechtsklick->Ausführen als und wählen Sie „Auf Server ausführen“.und Sie sollten die unten gezeigte Ausgabe erzielen:

Demobeispiel für den Servlet-Lebenszyklus

  • Java EE-Tutorials
  • Servlets-Tutorials
  • Fragen zum Servlets-Interview

Vorheriges Tutorial: Servlet-API || Nächstes Tutorial: Generisches Servlet und HTTP-Servlet

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen