Vier Phasen des Servlet-Lebenszyklus
1. Initialisierung durch Aufruf der Methode „init()“; 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 mehr bei jeder weiteren Benutzeranforderung aufgerufen.
@Override public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); }
2. Rufen Sie die Methode „service()“ auf, um die Anfrage des Clients zu bearbeiten.
Die Methode „service()“ ist die Hauptmethode zum Ausführen tatsächlicher Aufgaben. Der Servlet-Container (d. h. der Webserver) ruft die Methode service() auf, um die Anfrage vom Client (Browser) zu verarbeiten, und schreibt die formatierte Antwort zurück an den Client.
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if (method.equals(METHOD_GET)) { long lastModified = getLastModified(req); if (lastModified == -1) { // servlet doesn't support if-modified-since, no reason // to go through further expensive logic doGet(req, resp); } else { long ifModifiedSince; try { ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE); } catch (IllegalArgumentException iae) { // Invalid date header - proceed as if none was set ifModifiedSince = -1; } if (ifModifiedSince < (lastModified / 1000 * 1000)) { // If the servlet mod time is later, call doGet() // Round down to the nearest second for a proper compare // A ifModifiedSince of -1 will always be less maybeSetLastModified(resp, lastModified); doGet(req, resp); } else { resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); } } } else if (method.equals(METHOD_HEAD)) { long lastModified = getLastModified(req); maybeSetLastModified(resp, lastModified); doHead(req, resp); } else if (method.equals(METHOD_POST)) { doPost(req, resp); } else if (method.equals(METHOD_PUT)) { doPut(req, resp); } else if (method.equals(METHOD_DELETE)) { doDelete(req, resp); } else if (method.equals(METHOD_OPTIONS)) { doOptions(req,resp); } else if (method.equals(METHOD_TRACE)) { doTrace(req,resp); } else { // // Note that this means NO servlet supports whatever // method was requested, anywhere on this server. // String errMsg = lStrings.getString("http.method_not_implemented"); Object[] errArgs = new Object[1]; errArgs[0] = method; errMsg = MessageFormat.format(errMsg, errArgs); resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg); } }
3. Beenden Sie durch Aufrufen der Methode „destroy()“;
die Methode „destroy()“ wird nur einmal am Ende des Servlet-Lebenszyklus aufgerufen. Mit der Methode destroy() kann Ihr Servlet die Datenbankverbindung schließen, den Hintergrundthread stoppen, die Cookie-Liste schreiben oder auf den Datenträger klicken und andere ähnliche Bereinigungsaktivitäten durchführen.
@Override public void destroy() { // NOOP by default }
5. Die Garbage Collection wird vom Garbage Collector der JVM durchgeführt.
Empfohlenes Tutorial: „
Das obige ist der detaillierte Inhalt von4 Phasen des Servlet-Lebenszyklus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!