Servlet的生命周期

生命周期:就是说xxx的出生、服务,以及死亡
与Servlet的生命周期相关的方法有:
void init(ServletConfig);
void service(ServletRequest,ServletResponse);
void destroy();

Servlet的init( )
服务器会在Servlet第一次被访问时创建Servlet,或者是在服务器启动时创建Servlet。如果服务器启动时就创建Servlet,那么还需要在web.xml文件中配置。也就是说默认情况下,Servlet是在第一次被访问时由服务器创建的。
而且一个Servlet类型,服务器只创建一个实例对象,例如在我们首次访问http://localhost:8080/helloservlet/helloworld时,服务器通过“/helloworld”找到了绑定的Servlet名称为com.hpit.servlet.HelloServlet,然后服务器查看这个类型的Servlet是否已经创建过,如果没有创建过,那么服务器才会通过反射来创建HelloServlet的实例。当我们再次访问http://localhost:8080/helloservlet/helloworld时,服务器就不会再次创建HelloServlet实例了,而是直接使用上次创建的实例。
在Servlet被创建后,服务器会马上调用Servlet的void init(ServletConfig)方法。Servlet的生命周期中,这个方法只会被调用一次。
我们可以把一些对Servlet的初始化工作放到init方法中!

Servlet的service( )
  当服务器每次接收到请求时,都会去调用Servlet的service()方法来处理请求。服务器接收到一次请求,就会调用service() 方法一次,所以service()方法是会被调用多次的。正因为如此,所以我们需要把处理浏览器请求的代码写到service()方法中!

Servlet的destroy( )
  Servlet是不会轻易销毁的,通常都是在服务器关闭时Servlet才会离去!在服务器被关闭时,服务器会去销毁Servlet,在销毁Servlet之前服务器会先去调用Servlet的destroy()方法,我们可以把Servlet的被销毁前要执行的代码放到destroy()方法中,例如对某些资源的释放等代码放到destroy()方法中。

测试生命周期方法
修改HelloServlet如下,然后再去访问http://localhost:8080/helloservlet/helloworld

public class HelloServlet implements Servlet {
	public void init(ServletConfig config) throws ServletException {
		System.out.println("Servlet被创建了!");
	}
	public ServletConfig getServletConfig() {return null;}
	public void destroy() {
		System.out.println("Servlet要离去了!");
	}
	public String getServletInfo() {return null;}

	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		System.out.println("hello servlet!");
	}
}

在首次访问HelloServlet时,init方法会被执行,而且也会执行service方法。再次访问时,只会执行service方法,不再执行init方法。在关闭Tomcat时会调用destroy方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值