Servlet的生命周期

Java中,任何对象都有声明周期
按照功能的不同,可以将Servlet的生命周期,分为三个阶段
初始化阶段、运行阶段和消耗阶段

初始化阶段

当客户端响应Servlet容器,发出HTTP请求要去访问Servlet时,Servlet容器
首先,解析请求,检查内存中是否已经有了该Servlet对象
如果,存在直接使用该Servlet对象
如果,不存在,就创建Servlet实例对象,然后,通过调用init()方法,实现Servlet的初始化工作

注意
在Servlet的整个生命周期内,它的init()方法,只能被调用一次

运行阶段

这是Servlet生命周期中,最重要的阶段
这个阶段,Servlet容器会为这个请求创建,代表HTTP请求的ServletRequest对象和代表HTTP响应的ServletResponse对象
然后,将它们作为参数传递给Servlet的service()方法
Service()方法,从ServletRequest对象中获得客户请求信息,并处理该请求,通过ServletResponse对象,生成响应结果

在Servlet的整个生命周期内,对于Servlet的每一次访问请求,Servlet容器都会调用一次Servlet的service()方法,并且,创建新的ServletRequest对象和ServletResponse对象,也就是说,service()方法,在Servlet的整个生命周期中会被多次调用

销毁阶段

当服务器关闭,或者Web应用被移除出容器时,Servlet随着Web应用的销毁而销毁
在销毁Servlet之前,Servlet容器会调用Servlet的destroy()方法,以便让Servlet对象释放它所占用的资源
在Servlet的整个生命周期中,destroy()方法,也只被调用一次

注意
Servlet对象一旦创建,就会驻留在内存中,等待客户端的访问,直到服务器关闭,或者Web应用被移除出容器时,Servlet对象才被销毁

示例程序

在HelloWorldServlet中,重写init()方法和destroy()方法
HelloWorldServlet.java
代码如下

package cn.itcast.firstapp.servlet;
import javax.servlet.*;
public class HelloWorldServlet extends GenericServlet{
public void init(ServletConfig config)throws ServletException{
System.out.println("init method is called");
}
public void service(ServletRequest request, ServletResponse response) 
throws ServletException{        
System.out.println("Hello World");
}
public void destroy(){
System.out.println("destroy method is called");
}
}

重新编译,HelloWorldServlet.java文件

这里写图片描述

将编译后生成的class文件,复制到chapter04的WEB-INF\classes目录
启动Tomcat服务器,在浏览器的地址栏中输入URL地址
http://localhost:8080/chapter04/HelloWorldServlet
访问HelloWorldServlet

这里写图片描述

Tomcat控制台,输出结果如下

这里写图片描述

可以看出,Tomcat控制台输出了init method is called和Hello World语句
说明,第一次访问HelloWorldServlet时,Tomcat创建了HelloWorldServlet对象,并且,调用service()方法处理用于请求,通过init()方法,实现了Servlet的初始化

刷新浏览器

多次访问HelloWorldServlet
Tomcat控制台输出结果如下

这里写图片描述

可以看出,控制只输出了HelloWorld语句
因此,init()方法只在第一次访问时执行
Service()方法,则在每次访问时都会被执行

销毁对象

将HelloWorldServlet移除,通过Tomcat管理平台
终止Web应用chapter04

这里写图片描述

此时,Servlet容器会调用destroy()方法
控制台输出了destroy method is called语句

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值