Servlet-Lebenszyklus bezieht sich auf den gesamten Prozess des Servlets von der Erstellung bis zur Zerstörung, der in drei Phasen unterteilt werden kann: 1. Initialisierungsphase, Aufruf der init()-Methode, um das Servlet zu initialisieren; 2. Ausführungsphase (Verarbeitungsanforderungen); Der Container erstellt ein ServletRequest-Objekt, das eine HTTP-Anfrage darstellt, und ein ServletResponse-Objekt, das eine HTTP-Antwort für die angegebene Anforderung darstellt, und übergibt sie dann als Parameter an die service()-Methode des Servlets. 3. Zerstörungsphase;
Die Betriebsumgebung dieses Tutorials: Windows7-System, Java8-Version, DELL G3-Computer.
Servlet (Server Applet) ist die Abkürzung für Java Servlet. Es handelt sich um ein in Java geschriebenes serverseitiges Programm, das plattform- und protokollunabhängig ist Es läuft auf einem Webserver oder einem Programm auf dem Anwendungsserver.
Es soll als Zwischenschicht zwischen Anforderungen von Webbrowsern oder anderen HTTP-Clients und Datenbanken oder Anwendungen auf dem HTTP-Server fungieren. Die Hauptfunktion besteht darin, Benutzereingaben aus Webformularen zu sammeln, Daten interaktiv zu durchsuchen und zu generieren sowie dynamische Webinhalte zu generieren.
Der Servlet-Lebenszyklus kann als der gesamte Prozess von der Erstellung bis zur Zerstörung definiert werden.
Drei Schritte: Initialisierung------> Verarbeitungsanforderung-------> Zerstörung
Nach dem Erstellen des Servlet-Objekts---------->Initialisierung (Rufen Sie die Methode init () auf) ---------> > Zerstören (rufen Sie die Methode destroy() auf und lassen Sie den Müll schließlich vom Garbage Collector der JVM sammeln) 1) Initialisierungsphase Wenn der Client eine HTTP-Anfrage an den Servlet-Container sendet, um auf den zuzugreifen Servlet: Der Servlet-Container analysiert zunächst die Anforderung und prüft, ob das Servlet-Objekt bereits im Speicher vorhanden ist. Wenn nicht, erstellen Sie ein Servlet-Instanzobjekt und initialisieren Sie das Servlet durch Aufrufen von init(). Verfahren. Es ist zu beachten, dass während des gesamten Lebenszyklus eines Servlets seine init()-Methode nur einmal aufgerufen werden kann.
2) Ausführungsphase (Verarbeitungsanforderung)
Dies ist die wichtigste Phase im Servlet-Lebenszyklus. In dieser Phase erstellt der Servlet-Container ein ServletRequest-Objekt, das die HTTP-Anfrage darstellt, und ein ServletResponse-Objekt, das die HTTP-Antwort darstellt für diese Anfrage und übergeben Sie sie dann als Parameter an die service()-Methode des Servlets. Die Methode
service() ruft Kundenanfrageinformationen vom ServletRequest-Objekt ab, verarbeitet die Anfrage und generiert ein Antwortergebnis über das ServletResponse-Objekt. Während des gesamten Lebenszyklus des Servlets ruft der Servlet-Container für jede Zugriffsanforderung des Servlets einmal die service()-Methode des Servlets auf und erstellt neue ServletRequest- und ServletResponse-Objekte Das Servlet wird im Laufe des Lebenszyklus mehrmals aufgerufen.
3) ZerstörungsphaseWenn der Server heruntergefahren oder die Webanwendung aus dem Container entfernt wird, wird das Servlet zerstört, wenn die Webanwendung geschlossen wird. Bevor das Servlet zerstört wird, ruft der Servlet-Container die Methode destroy() des Servlets auf, damit das Servlet-Objekt die von ihm belegten Ressourcen freigeben kann. Die Methode destroy() kann während des gesamten Lebenszyklus des Servlets nur einmal aufgerufen werden.
Es ist zu beachten, dass das Servlet-Objekt nach seiner Erstellung im Speicher verbleibt und auf den Clientzugriff wartet. Das Servlet-Objekt wird nicht zerstört, bis der Server heruntergefahren oder die Webanwendung aus dem Container entfernt wird.
3. Detaillierte Erläuterung der Lebenszyklusmethoden1. init()-Methode
Rufen Sie die init()-Methode des Servlet-Objekts auf, um die Servlet-Informationen zu initialisieren. Die init()-Methode wird nach der Erstellung nur einmal aufgerufen (Initialisierungsphase) (1) Die init-Methode ist so konzipiert, dass sie nur einmal aufgerufen wird. Es wird aufgerufen, wenn das Servlet zum ersten Mal erstellt wird, und wird nicht bei jeder weiteren Benutzeranfrage aufgerufen. Daher
Es wird zur einmaligen Initialisierung verwendeterstellt, wenn der Benutzer die URL des Servlets zum ersten Mal aufruft. Sie können auch angeben, dass das Servlet beim ersten Start des Servers geladen wird. (2)Wenn der Benutzer ein Servlet aufruft, wird eine Servlet-Instanz erstellt. Jede Benutzeranforderung generiert einen neuen Thread und übergibt ihn gegebenenfalls an die doGet- oder doPost-Methode. Diese Daten werden während des gesamten Lebenszyklus des Servlets verwendet. init-Methode ist wie folgt definiert: public void init() throws ServletException {
// 初始化代码...
}
antwortet auf die Anfrage und ruft service() oder doGet(), doPost()-Methode auf Um die Anfrage zu verarbeiten, werden diese Methoden im Multithread-Zustand ausgeführt. (Reaktion auf Client-Anfragephase)
(1) Dieservice()-Methode ist die Hauptmethode zum Ausführen tatsächlicher Aufgaben, zum Verarbeiten von Anfragen vom Client (Browser) und zum Zurückschreiben der formatierten Antwort an den Client.
(2) Jedes Mal, wenn der Server eine Servlet-Anfrage empfängt, generiert der Servereinen neuen Thread und ruft den Dienst auf.
(3) Der Prozess des Empfangens und Beantwortens von Kundenanfragen durch das Servlet. Das Servlet ruft die Methode service() auf, um auf die Anfrage zu antworten Wählen Sie beim Ändern der Methode in der service()-Methode den Aufruf von doGet, doPost und anderen Methoden aus und geben Sie dann die entsprechende Methode ein, um die Logikschichtmethode aufzurufen, um die Antwort an den Kunden zu implementieren. Da es in der Servlet-Schnittstelle und im GenericServlet keine Methoden von doGet, doPost usw. gibt, werden diese Methoden in HttpServlet definiert. Daher müssen wir jedes Mal, wenn wir ein Servlet definieren, doGet oder doPost und andere Methoden implementieren.(4) Die service()-Methode
prüft den HTTP-Anfragetyp(GET, POST, PUT, DELETE usw.) und ruft bei Bedarf doGet, doPost, doPut, doDelete und andere Methoden zur Verarbeitung auf.
Die Service-Methode ist wie folgt definiert:public void service(ServletRequest request,ServletResponse response)
throws ServletException, IOException{
}
Da die service()-Methode vom Container aufgerufen wird, ruft die Service-Methode gegebenenfalls doGet, doPost, doPut, doDelete und andere Methoden auf. Deshalb
wird zum Verarbeiten von Anforderungen verwendet und die Methode wird in einem Multithread-Zustand ausgeführt. (Antwort auf Kundenanfragen) doGet() ist die am häufigsten verwendete Methode bei Serviceanfragen. Sie wird zum Verarbeiten von Anfragen verwendet, wenn der
Anfragetyp der URL eine GET-Anfrage oder einenicht spezifizierte Anfrage ist TypHTML-Formular. Dann wird die Anfrage von der doGet()-Methode verarbeitet. Die Methode „doGet“ ist wie folgt definiert: „public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
“ 4. Die Methode „doPost()“ wird zum Verarbeiten von Anforderungen verwendet und die Methode wird in einem Multithread-Zustand ausgeführt. (Antwort auf Kundenanfragen)
Anfragetyp als POST angibt. Dann wird die Anfrage durch die Verarbeitung der doPost( )-Methode verarbeitet. Die Methode „doPost“ ist wie folgt definiert: „
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet 代码 }“ )-Methode wird aufgerufen, um das Servlet-Objekt zu zerstören. (Beendigungsphase)
(1) Die Methode destroy() wird nur einmal am Ende des Servlet-Lebenszyklus aufgerufen. (2) Die destroy()-Methode ermöglicht es dem Servlet, die Datenbankverbindung zu schließen, den Hintergrundthread zu stoppen, die Cookie-Liste zu schreiben oder auf den Datenträger zu klicken und andere ähnliche Bereinigungsaktivitäten durchzuführen.
(3) Nach dem Aufruf der destroy()-Methode wird das Servlet-Objekt für die Garbage Collection markiert.
Die Zerstörungsmethode ist wie folgt definiert:public void destroy() {
// 终止化代码...
}
4. Lebenszyklusdiagramm
Nachdem Sie den obigen Inhalt verstanden haben, wird es viel einfacher sein, sich das Zyklusdiagramm anzusehen. Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmierunterricht
! !Das obige ist der detaillierte Inhalt vonDer Servlet-Lebenszyklus ist in mehrere Phasen unterteilt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!