Servlet的生命周期

 


关于Servlet对象的生命周期

1、什么是生命周期?

  生命周期表示一个java对象从最初被创建到最终被销毁,经历的所有过程。

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

  Servlet对象的生命周期,javaweb程序员是无权干涉的,包括该Servlet对象的相关方法的调用,javaweb程序员也是无权干涉的。
Servlet对象从最初的创建,方法的调用,以及最对象的销毁,整个过程,是由WEB容器来管理的。
Web Container管理Servlet对象的生 命周期。

3、“默认情况下”,Servlett对象在WEB服务器启动阶段不会被实例化。

  [若希望在web服务器启动阶段实例化Servlet对象,需要进行特殊的设置]

4、描述Servlet对象生命周期


1)用户在浏览器地址栏上输入URL: http://localhost :8080/pri-serv1et-03/testLifeCycle
2) web容器截取请求路径: /prj-servlet-03/testLifeCycle
3) web容器在容器 上下文中找请求路径/pri-servlet- 03/testLifeCycle对应的Servlet对象

4)若没有找到对应的Servlet对象

4.1)通过web.xml文件中相关的置信息,得到请求路径/testLifeCyc1e对应的Servlet完整类名
4.2)通过反射机制,调用Servlet类的无参数构造方法完成Servlet对象的实例化
4.3) web容器调用Servlet对象的init方法完成初始化操作
4.4) web容器调用Servlet对象的service方法提供服务

5)若找到对应的Servlet对象

5.1) web容器 直接调用Servlet对象的service方法提供服务

6) web容器关闭的时候/ webapp重新部署的时候/该Servlet对象长时间没有用户再次访问的时候,web容器会将该Servlet对象
销毁,在销毁该对象之前,web容器会调用Servlet对象的destroy方法,完成销毁之前的准备。

总结:

  1. Servlet类的构造方法只执行一次
  2. Servlet对象的init方法只执行一次
  3. Servlet对象的service方法,只要用户请求一次,则执行一次
  4. Servlet对象的destroy方法只执行一次

注意:

  1. init方法执行的时候,Servlet对象已经被创健好了。.
  2. destroy方法执行的时候,Servlet对象还没有被销毁,即将被销毁。
  3. Servlet对象是单例,但是不符合单例模式,只能称为伪单例。真单例的构造方法是私有化的,Tomcat服务器是支持多线程的。所以Servlet对象在单实例多线程的环境下运行的。
    那么Servlet对象中若有变量,并且实例变量涉及到修改操作,那么这个Servlet对象一定会存在线程安全问题,不建议在Servlet对象中使用实例变量,尽里使用局部变里。
posted @   Java小白的搬砖路  阅读(420)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示