精华内容
下载资源
问答
  • servlet生命周期

    2017-06-14 00:24:58
    servlet生命周期:加载->实例化->服务->销毁1.init():在servlet生命周期周期中,init()仅执行一次,在服务器装入servlet时执行, 在情动服务器或者首次访问servlet时装入servlet.之后无论多少次访问servlet都不会执行...

    servlet生命周期:加载->实例化->服务->销毁

    1.init():在servlet生命周期周期中,init()仅执行一次,在服务器装入servlet时执行,
    在情动服务器或者首次访问servlet时装入servlet.之后无论多少次访问servlet都不会执行init().

    2.service():负责响应客户端的请求,每当客户请求一个servlet对象时,该对象是service()方法就会被调用,并传入一个ServletRequest对象和
    ServletResponse对象作为参数.该方法是默认功能是根据请求的类型调用相应的do方法

    3.destroy():仅仅执行一次,在服务端停止并卸载Servlet时执行该方法.当Servlet对象退出生命周期时,负责释放占用的资源。
    在Servlet执行service()方法时可能会启动其他线程,所以在需要调用destroy()方法时,这些线程应该终止或者已完成

    展开全文
  • Servlet生命周期

    2016-10-25 15:28:00
    JavaWeb应用的生命周期由Servlet容器控制,而Servlet的容器也同样由Servlet容器控制。Servlet的生命周期分为三个阶段:初始...它们会在Servlet生命周期的不同阶段被调用。 初始化阶段 (1)Servlet容器加载Servle...

    JavaWeb应用的生命周期由Servlet容器控制,而Servlet的容器也同样由Servlet容器控制。Servlet的生命周期分为三个阶段:初始化阶段、运行阶段和销毁阶段。javax.servlet.Servlet接口定义了三个方法:init()、service()和destroy()。它们会在Servlet生命周期的不同阶段被调用。

    初始化阶段

    (1)Servlet容器加载Servlet类,将其class文件读入到内存

    (2)Servlet容器创建ServletConfig对象。该对象包含了特定Servlet的初始化配置信息。并且将该对象与ServletContext对象关联。可以通过该对象获得ServletContext对象。

    (3)Servlet容器创建Servlet对象。

    (4)Servlet容器调用Servlet对象的init(ServletConfig)方法,并建立Servlet和ServletConfig对象的关联。通过Servlet可以获得ServletConfig对象。

    运行阶段

    这个阶段,Servlet可以随时响应客户端的请求。当Servlet容器收到要求访问特定的Servlet的请求时,Servlet容器会创建针对这个请求的ServletRequest和ServletResponse对象,然后调用对应Servlet的service()方法。当Servlet容器把Servlet生成的响应结果发送给客户端后,Servlet容器就会销毁ServletRequest对象和ServletResponse对象。

    销毁阶段

    当Web应用被终止时,Servlet容器会调用所有Servlet对象的destroy()方法,然后再销毁这些Servlet对象。然后还会销毁与该Servlet对应的ServletConfig对象。

    转载于:https://www.cnblogs.com/wuchaodzxx/p/5996857.html

    展开全文
  • 在你的应用加载并使用一个Servlet时,从初始化到销毁这个Servlet期间会发生一系列的事件。这些事件叫做Servlet的生命周期事件(或方法)。让我们一起来进一步了解它们。...1) 在Servlet生命周期的初

    在你的应用加载并使用一个Servlet时,从初始化到销毁这个Servlet期间会发生一系列的事件。这些事件叫做Servlet的生命周期事件(或方法)。让我们一起来进一步了解它们。

    Servlet生命周期的三个核心方法分别是 init() , service() 和 destroy()。每个Servlet都会实现这些方法,并且在特定的运行时间调用它们。

    1) 在Servlet生命周期的初始化阶段,web容器通过调用init()方法来初始化Servlet实例,并且可以传递一个实现 javax.servlet.ServletConfig 接口的对象给它。这个配置对象(configuration object)使Servlet能够读取在web应用的web.xml文件里定义的名值(name-value)初始参数。这个方法在Servlet实例的生命周期里只调用一次

    init方法定义与这类似:

    1
    2
    3
    public void  init() throws ServletException {
        //custom initialization code
    }

    2) 初始化后,Servlet实例就可以处理客户端请求了。web容器调用Servlet的service()方法来处理每一个请求。service() 方法定义了能够处理的请求类型并且调用适当方法来处理这些请求。编写Servlet的开发者必须为这些方法提供实现。如果发出一个Servlet没实现的请求,那么父类的方法就会被调用并且通常会给请求方(requester)返回一个错误信息。

    通常,我们不需要重写(override)这个方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    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 = req.getDateHeader(HEADER_IFMODSINCE);
        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) 最后,web容器调用destroy()方法来终结Servlet。如果你想在Servlet的生命周期内关闭或者销毁一些文件系统或者网络资源,你可以调用这个方法来实现。destroy() 方法和init()方法一样,在Servlet的生命周期里只能调用一次。

    1
    2
    3
    public void destroy() {
    //
    }

    在大多数情况下,你通常不需要在你的Servlet里重写这些方法。

    展开全文
  • Servlet 生命周期

    2020-12-01 19:01:36
    Servlet 生命周期 Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet 初始化后调用 init () 方法。 Servlet 调用 service() 方法来处理客户端的请求。 Servlet 销毁前调用...

    Servlet 生命周期

    Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

    • Servlet 初始化后调用 init () 方法。
    • Servlet 调用 service() 方法来处理客户端的请求。
    • Servlet 销毁前调用 destroy() 方法。
    • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
      现在让我们详细讨论生命周期的方法。

    init() 方法

    init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。

    Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是您也可以指定 Servlet 在服务器第一次启动时被加载。

    当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。

    init 方法的定义如下:

    public void init() throws ServletException {
      // 初始化代码...
    }
    

    service() 方法

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

    每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

    下面是该方法的特征:

    public void service(ServletRequest request, 
                        ServletResponse response) 
          throws ServletException, IOException{
    }
    

    service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,您只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。

    doGet() 和 doPost() 方法是每次服务请求中最常用的方法。下面是这两种方法的特征。

    doGet() 方法

    GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。

    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException {
        // Servlet 代码
    }
    

    doPost() 方法

    POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。

    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
        throws ServletException, IOException {
        // Servlet 代码
    }
    

    destroy() 方法

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

    在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。destroy 方法定义如下所示:

      public void destroy() {
        // 终止化代码...
      }
    

    架构图
    下图显示了一个典型的 Servlet 生命周期方案。

    • 第一个到达服务器的 HTTP 请求被委派到 Servlet 容器。
    • Servlet 容器在调用 service() 方法之前加载Servlet。
    • 然后 Servlet 容器处理由多个线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法。在这里插入图片描述
    展开全文
  • Servlet生命周期详解

    2021-01-23 23:20:29
    Servlet生命周期概述servlet生命周期的四个过程1、实例化servlet对象我们的OOP(面向对象)思想中,总是先创建对象,通过对象调用成员,那么servlet如何实例化呢?设置对应servlet的优先级(loadOnStartup)2、初始化...
  • servlet生命周期知识

    2021-03-23 17:29:43
    servelet生命周期运行过程servlet生命周期过程简单来说就是用户向servelet容器发出http请求,servelet容器数据库中查找与相关的内容并返回给用户。 注: 处理http请求可以用HttpServelet,其中包括多种方法 http...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,087
精华内容 2,434
关键字:

在servlet生命周期