Servlet入门介绍第三章——Servlet的生命周期

之前简单提过Servlet的生命周期,现在详细介绍下。

Servlet 的生命周期可以分为三个阶段:
(1)、初始化阶段(init方法)
(2)、响应客户请求阶段(service方法)
(3)、终止阶段(destroy方法)

首先,Servlet的运行时阶段
(一)、在下列时刻Servlet容器装载Servlet:
(1)Servlet容器启动时自动装载某些Servlet,Load-on-startup设置时值小的优先初始化
(2)在Servlet容器启动后,客户首次向Servlet 发出请求
(3)Servlet的类文件被更新后,重新装载Servlet

(二)、Servlet被装载后,Servlet容器创建一个Servlet 实例并且调 用Servlet 的init()方法进行初始化。在Servlet的整个生命周期中,init方法只会被调用一次。

其次,Servlet的运行时阶段
(一)、对于到达Servlet容器的客户请求,Servlet容器创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service()方法。service方法从ServletRequest对象获得客户请求信息、处理该请求,并通过ServletResponse对象向客户返回响应结果。
(二)、当Servlet容器把响应结果发送给了客户,Servlet容器就会销毁ServletRequest和ServletResponse对象。

最后,Servlet的终止阶段
当Web应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet的新实例时,Servlet容器会先调用Servlet的destroy方法。在destroy方法中,可以释放Servlet所占用的资源。

接下来做个测试Servlet生命周期的LifeServlet,具体代码如下:

package com.java.web.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LifeServlet extends HttpServlet{

    private static final long serialVersionUID = -2389496689326872536L;
    private int initCount;
    private int serviceCount;
    private int destroyCount;
    private String name;

    @Override
    public void init(ServletConfig config) throws ServletException {
        initCount++;
        name = config.getServletName();
        System.out.println(name + "初始化次数" + initCount);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html");
        serviceCount++;
        PrintWriter writer = resp.getWriter();
        writer.write(name + "初始化次数:" + initCount + "
"
); System.out.println(name +"响应次数:" + serviceCount); writer.write(name + "响应次数:" + serviceCount + "
"
); writer.write(name + "销毁次数:" + destroyCount + "
"
); writer.flush(); writer.close(); } @Override public void destroy() { destroyCount++; System.out.println(name + "销毁次数" + destroyCount); } }

配置信息:

<servlet>
        <servlet-name>LifeServletservlet-name>  
        <servlet-class>com.java.web.servlet.LifeServlet
        servlet-class>
servlet>

 <servlet-mapping>
        <servlet-name>LifeServletservlet-name>
        <url-pattern>/LifeServleturl-pattern>
servlet-mapping>

测试结果:
Servlet入门介绍第三章——Servlet的生命周期_第1张图片

Servlet入门介绍第三章——Servlet的生命周期_第2张图片

在Tomcat 安装目录下的conf目录下的server.xml中添加
Servlet入门介绍第三章——Servlet的生命周期_第3张图片
将Servlet16_10_3改为自己相应的项目名即可。添加完后只需随意在LifeServlet中变动下,然后保存,即可重新加载Servlet。
还有其他方法测试生命周期这边不多介绍。

你可能感兴趣的:(Servlet入门介绍第三章——Servlet的生命周期)