Servlet 生命周期的4个阶段

互联网 20-6-17

Servlet 生命周期的4个阶段

1、通过调用“init()”方法进行初始化;

init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。

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

2、调用“service()”方法来处理客户端的请求;

service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

 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、通过调用“destroy()”方法终止;

destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。

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

5、由JVM的垃圾回收器进行垃圾回收的。

推荐教程:《Java教程》

以上就是Servlet 生命周期的4个阶段的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: java
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:public static void main什么意思

相关资讯