Heim  >  Artikel  >  Java  >  4 Phasen des Servlet-Lebenszyklus

4 Phasen des Servlet-Lebenszyklus

Guanhui
GuanhuiOriginal
2020-06-17 11:14:465349Durchsuche

4 Phasen des Servlet-Lebenszyklus

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: „

Java-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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn