servlet的生命周期

servlet的生命周期是从第一次调用,到服务器关闭。如果web.xml中配置了load-on-startup,则是从服务器开启到服务器关闭。

一个web项目会有多个的servlet,那么,当服务器开启时,web.xml加载进内存,当在浏览器访问某个servlet时,服务器会去web.xml寻找相关信息,并加载相关的servlet进内存,此时才算是一个servlet生命周期的开始。

一:没有配置load-on-startup时

而servlet是用来处理浏览器发送的请求,当用户第一次请求结束以后,由于不知道什么时候会再次发起请求,此servlet就还在,当服务器也关闭了,那么所以东西就都不在内存中了。

为了证明这个,我们通过写两个方法来观察

init方法是对Servlet进行初始化的一个方法,会在Servlet第一次加载进行存储时执行(生命周期的开始)

destory方法是在servlet被销毁时执行,也就服务器关闭时。(生命周期的结束)

我们写一个程序。
运行程序,我们观察什么时候会打印init中的信息和destroy中的信息(表示此servlet生命的开始和结束)
public class ServletLife extends HttpServlet {
	
	@Override
	public void init() throws ServletException {
		System.out.println("Servlet加载了。。。。。");
	}
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		
		resp.getWriter().write("servlet");
		System.out.println("ServletLife.service()");
	}
	
	@Override
	public void destroy() {
		System.out.println("我被销毁了。。。。。");
	}
}

1.当开启服务器时,观察控制台,什么信息也没有打印。说明此时servlet生命还没有开始

2.当在浏览器进行第一次请求时,发现init中的信息被打印了(加载进内存了)。此时servlet的生命周期才开始

当继续发送请求时,发现init中的信息只打印了一次,说明这个方法只会执行一次。

3.当关闭服务器时,发现destroy中的方法被打印了,说明此时servlet的生命结束了。


二:配置了load-on-startup


1.再次启动服务器,观察控制台,此时我们发现,这次,在服务器启动时,init中的信息被打印了,说明此时该servlet加载进了内存,。生命周期已经开始。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值