servlet生命周期详解

什么是生命周期

生命局期表示一个java对象外最初被仓健到最终被销毁,经历的所有过程。

Servlet对象的生命周期是谁来管理的?程序员可以干涉吗?

servlet对象的生命周期,javaveb程序员是无权千涉的,包括该Servlet对象的相关方法的调用,javaweb程序员也是无权千涉的。

Servlet对象从最初的创建,方法的调用,以及最对象自销毁,整个过程,是由WEB容器来管理的。
Web Container管理Servlet对象的生命周期。

实例化

“默认情况下”,Servlet对象在WEB服务器启动阶段不会被实例化。【若希望在web服务器启动阶段实例化Servlet对象,需要进行特殊的设置】

描述Servlet对象生命周期

1)用户在浏览器地址栏上输入URL
2)web容器截取请求路径:(http://1ocalhost:8080)之后的路径
3)web容器在容器上下文中找请求路径对应的Servlet对象
4)若没有找到对应的Servlet对象
4.1) 通过web.xm1文件中相关的配置信息,得到请求路径对应的Servlet完整类名
4.2) 通过反射机制,调用Servlet 类的无参数构造方法完成Servlet对象的实例化
4.3) web容器调用Serv1et对象的init方法完成初始化操作
4.4) web容器调用Servlet对象的service方法提供服务
5)者找到对应的Servlet对象
5.1) web容器直接调用Servlet对象的service方法提供服务
6)web容器关闭的时候/webapp重新部署的时候/该Serv1et对象长时间没有用户再次访问的时候,
web容器会将该Servlet对象销毁,在销毁该对象之前,web容器会调用Serv1et对象的destroy方法,完成销毁之前的准备

总结

5.1 Servlet类的构造方法只执行一次
5.2 Servlet对象的init方法只执行一次
5.3 Servlet对象的service方法,只要用户请求一次,执行一次
5.4 Servlet对象的destroy方法只执行一次

注意

init方法执行的时候,Servlet对象已经被创建好了。
destroy方法执行的时候,Servlet对象还没有被销毁,即将被销毁。

Servlet对象是单例,但是不符合单例模式,只能称为伪单例。

真单例的构造方法是私有化的,tomcat服务器是支持多线程的。
所以Servlet对象在单实例多线程的环境下运行的。那么Servlet对象中若有实例变量,并且实例变重涉及到修改操作,那么这个
Servlet对象一定会存在线程安全问题,不建议在Serv1et对象中使用实例交量,尽里使用局部变里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值