Servlet的生命周期

Sevlet的生命周期总览

各个阶段

1、实例化

        Servlet容器创建Servlet的实例

2、初始化

        该容器调用init()方法

3、服务

        如果请求Servlet,则容器调用service()方法

4、销毁

        销毁实例之前调用destory()方法

举例说明:

@WebServlet("/abc")
public class ABCServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       public ABCServlet() {
    	   System.out.println("ABCServlet的构造方法运行了");
       }
       public void init(ServletConfig config) {
    	   System.out.println("ABCServlet的init方法运行了");
       }
       public void destroy() {
    	   System.out.println("ABCServlet的destroy方法运行了");
       }
   
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ABCServlet的doGet方法运行了");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ABCServlet的doPost方法运行了");
	}

}

控制台打印的结果:

ABCServlet的构造方法运行了
ABCServlet的init方法运行了
ABCServlet的doGet方法运行了

启动的时候自动将abc二进制代码加载到Servlet容器中

浏览器网址发送get请求

先执行构造方法,创建实例化对象

然后调用init方法,初始化操作

Servlet调用doGet方法

完成服务,看到一个空白的页面

第二次输入网址的时候发送的还是get请求,控制台输出

ABCServlet的doGet方法运行了

第一次执行Servlet比较慢是因为要创建实例化对象及初始化操作

实例化对象已经创建了,不会再重新创建实例化对象,所以运行速度很快

修改doGet方法之后保存,Servlet会调用destroy方法销毁实例化对象,重新创建

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ABCServlet的doGet方法运行了");
		System.out.println("ABCServlet的doGet方法修改了");
	}

控制台输出:运行destroy方法

ABCServlet的构造方法运行了
ABCServlet的init方法运行了
ABCServlet的doGet方法运行了
十月 29, 2022 5:55:16 下午 org.apache.catalina.core.StandardContext reload
信息: 已开始重新加载名为[/Servlet]的上下文
ABCServlet的destroy方法运行了

上面的案例能够完整的说明Sevlet的生命周期

实例化,初始化,服务及销毁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值