Maison  >  Article  >  Java  >  4 étapes du cycle de vie du servlet

4 étapes du cycle de vie du servlet

Guanhui
Guanhuioriginal
2020-06-17 11:14:465333parcourir

4 étapes du cycle de vie du servlet

Quatre étapes du cycle de vie du Servlet

1. Initialisation en appelant la méthode "init()"

Le La méthode init est conçue pour être appelée une seule fois. Il est appelé lors de la première création du servlet et n'est plus appelé à chaque demande utilisateur ultérieure.

  @Override
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        this.init();
    }

2. Appelez la méthode "service()" pour gérer la demande du client ;

la méthode service() est la méthode principale pour effectuer les tâches réelles. Le conteneur Servlet (c'est-à-dire le serveur Web) appelle la méthode service() pour gérer la demande du client (navigateur) et réécrit la réponse formatée au 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. Terminez en appelant la méthode "destroy()" ;

la méthode destroy() ne sera appelée qu'une seule fois, à la fin du cycle de vie du servlet. La méthode destroy() permet à votre servlet de fermer la connexion à la base de données, d'arrêter le thread d'arrière-plan, d'écrire la liste des cookies ou de cliquer sur le compteur sur le disque et d'effectuer d'autres activités de nettoyage similaires.

@Override
    public void destroy() {
        // NOOP by default
    }

5. Le garbage collection est effectué par le garbage collector de la JVM.

Tutoriel recommandé : "Tutoriel Java"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn