Servlet生命周期

Servlet生命周期

1.servlet容器
Tomcat是一个servlet容器。
启动tomcat,tomcat会为每一个servlet类创建唯一的servlet对象,然后保存在容器中。
2.Servlet生命周期
实例化:会加载web.xml文件,为每一个servlet类创建一个servlet对象。
初始化:实例化完毕,tomcat会调用servlet对象的init()来完成对象的初始化工作。
服务:当有请求时,tomcat会调用servlet对象的service()方法完成请求处理和响应设置。
销毁:关闭tomcat时,tomcat会调用servlet对象的destroy()方法销毁。

测试代码

public class LifeServlet extends  HttpServlet{
	
	public LifeServlet() {
		System.out.println("实例化");
	}
	
	int  a;
	@Override
	public void init() throws ServletException {
		a=9;
		System.out.println("初始化"+a);
	}
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("服务");
	}
	
	@Override
	public void destroy() {
		System.out.println("销毁");
	}
}

web.xml配置

<servlet>
  	<servlet-name>life</servlet-name>
  	<servlet-class>com.servletDemo.servlet.LifeServlet</servlet-class>
//	  	
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>life</servlet-name>
  	<url-pattern>/life</url-pattern>
  </servlet-mapping>

注意:整个生命周期中,服务是多次的,而实例化、初始化、销毁只有一次。

实例化+初始化的两种情况:
 第一种,启动tomcat时,完成实例化和初始化;
 第二种(默认),第一次接受请求时,先完成实例化和初始化,然后再服务。
就是上面的web.xml中的<load-on-startup>1</load-on-startup>配置
它的值必须是一个整数,表示servlet被加载的先后顺序。
如果该元素的值为负数或者没有设置,则容器会当Servlet被请求时再加载。(启动tomcat不会被加载,只有访问这个servlet时才实例化和初始化)
如果值为正整数或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,就越先被加载。值相同时,容器就会自己选择顺序来加载。(tomcat启动时就会被实例化和初始化)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值