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 + "<br>");
        System.out.println(name +"响应次数:" + serviceCount);
        writer.write(name + "响应次数:" + serviceCount + "<br>");
        writer.write(name + "销毁次数:" + destroyCount + "<br>");
        writer.flush();
        writer.close();

    }

    @Override
    public void destroy() {
        destroyCount++;
        System.out.println(name + "销毁次数" + destroyCount);
    }
}

配置信息:

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

 <servlet-mapping>
        <servlet-name>LifeServlet</servlet-name>
        <url-pattern>/LifeServlet</url-pattern>
</servlet-mapping>

测试结果:
这里写图片描述

这里写图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值