Servlets - Lebenszyklus

Ein Servlet-Lebenszyklus kann als der gesamte Prozess von seiner Erstellung bis zur Zerstörung definiert werden. Das Folgende sind die Pfade, denen ein Servlet folgt.

  • Das Servlet wird durch Aufrufen von initialisiert init() Methode.

  • Das Servlet ruft auf service() Methode zum Verarbeiten der Anfrage eines Kunden.

  • Das Servlet wird durch Aufrufen von beendet destroy() Methode.

  • Schließlich ist Servlet Müll, der vom Garbage Collector der JVM gesammelt wird.

Lassen Sie uns nun die Lebenszyklusmethoden im Detail diskutieren.

Die init () -Methode

Die init-Methode wird nur einmal aufgerufen. Es wird nur aufgerufen, wenn das Servlet erstellt wird, und danach nicht mehr für Benutzeranforderungen aufgerufen. Daher wird es für einmalige Initialisierungen verwendet, genau wie bei der Init-Methode von Applets.

Das Servlet wird normalerweise erstellt, wenn ein Benutzer zum ersten Mal eine dem Servlet entsprechende URL aufruft. Sie können jedoch auch angeben, dass das Servlet beim ersten Start des Servers geladen werden soll.

Wenn ein Benutzer ein Servlet aufruft, wird eine einzelne Instanz jedes Servlets erstellt, wobei jede Benutzeranforderung zu einem neuen Thread führt, der je nach Bedarf an doGet oder doPost übergeben wird. Die Methode init () erstellt oder lädt einfach einige Daten, die während der gesamten Lebensdauer des Servlets verwendet werden.

Die Definition der init-Methode sieht folgendermaßen aus:

public void init() throws ServletException {
   // Initialization code...
}

Die service () -Methode

Die service () -Methode ist die Hauptmethode zum Ausführen der eigentlichen Aufgabe. Der Servlet-Container (dh der Webserver) ruft die service () -Methode auf, um vom Client (Browser) kommende Anforderungen zu verarbeiten und die formatierte Antwort zurück an den Client zu schreiben.

Jedes Mal, wenn der Server eine Anforderung für ein Servlet empfängt, erzeugt der Server einen neuen Thread und ruft den Dienst auf. Die service () -Methode überprüft den HTTP-Anforderungstyp (GET, POST, PUT, DELETE usw.) und ruft die entsprechenden Methoden doGet, doPost, doPut, doDelete usw. auf.

Hier ist die Signatur dieser Methode -

public void service(ServletRequest request, ServletResponse response) 
   throws ServletException, IOException {
}

Die service () -Methode wird vom Container aufgerufen, und die service-Methode ruft die entsprechenden Methoden doGet, doPost, doPut, doDelete usw. auf. Sie haben also nichts mit der service () -Methode zu tun, sondern überschreiben entweder doGet () oder doPost (), je nachdem, welche Art von Anforderung Sie vom Client erhalten.

DoGet () und doPost () sind die am häufigsten verwendeten Methoden in jeder Serviceanforderung. Hier ist die Signatur dieser beiden Methoden.

Die doGet () -Methode

Eine GET-Anforderung resultiert aus einer normalen Anforderung einer URL oder aus einem HTML-Formular, für das keine METHODE angegeben ist und das von der Methode doGet () verarbeitet werden sollte.

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

Die doPost () -Methode

Eine POST-Anforderung resultiert aus einem HTML-Formular, in dem POST speziell als METHODE aufgeführt ist, und sollte von der Methode doPost () verarbeitet werden.

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

Die destroy () -Methode

Die Methode destroy () wird am Ende des Lebenszyklus eines Servlets nur einmal aufgerufen. Diese Methode gibt Ihrem Servlet die Möglichkeit, Datenbankverbindungen zu schließen, Hintergrundthreads anzuhalten, Cookie-Listen zu schreiben oder die Anzahl der Treffer auf die Festplatte zu legen und andere solche Bereinigungsaktivitäten durchzuführen.

Nach dem Aufruf der destroy () -Methode wird das Servlet-Objekt für die Garbage Collection markiert. Die Definition der Zerstörungsmethode sieht folgendermaßen aus:

public void destroy() {
   // Finalization code...
}

Architekturdiagramm

Die folgende Abbildung zeigt ein typisches Servlet-Lebenszyklus-Szenario.

  • Zuerst werden die an den Server kommenden HTTP-Anforderungen an den Servlet-Container delegiert.

  • Der Servlet-Container lädt das Servlet, bevor die service () -Methode aufgerufen wird.

  • Anschließend verarbeitet der Servlet-Container mehrere Anforderungen, indem mehrere Threads erzeugt werden, wobei jeder Thread die service () -Methode einer einzelnen Instanz des Servlets ausführt.