Servlet生命周期

  • 什么是Servlet的生命周期
  1. 创建时间
  2. 销毁时间
  3. 创建数量
  4. Servlet生命周期表示一个Servlet对象从出生到最后的死亡的guoc
  • Servlet对象由谁维护
  1. Javaweb程序员无权干预Servlet对象的创建、对象上方法的调用
  2. 生命周期全权由Tomcat服务器负责
  3. 服务器又称WEB容器
  4. WEB容器管Servlet对象的生命周期
  5. 自己new的Servlet对象不受WEB容器管理
  • 服务器启动的时候会解析web.xml文件,并不会实例化对象

  • 如何让Tomcat启动时创建对象
    加上标签
    <load-on-stratup>
    传入变量是一个非负整数,数字越小优先级越高

  • Servlet生命周期

    • 默认情况服务器启动没有实例化对象
    • 用户发送第一次请求时实例化Servlet对象,并且服务器马上调用init方法(init方法执行时,Servlet对象已经存在了)
    • 用户发送第一次请求时,init方法执行后,Tomcat服务器马上调用Servlet的service方法
    • 用户在第一次请求之后的所有请求,Servlet对象并没有新建,还是使用之前的Servlet对象,直接调用该Servlet的service方法
      • Servlet对象是单例的,但是Servlet类并不符合单例模式 ,称之为假单例,真单例模式:构造方法是私有化的
      • 无参数构造方法只执行一次,init方法也只调用一次
      • 用户发送一次请求,service方法就被调用一次
    • 关闭服务器时调用destroy方法
      • 只在服务器关闭时调用一次
      • 因为关闭服务器要销毁Servlet对象的内存
      • 销毁对象内存之前调用destroy方法
  • init方法:

    • 通常是完成初始化的
  • Service

    • 核心方法
  • destory

    • Servlet对象销毁前的准备工作,例如关闭流
  • 当Servlet类中编写一个有参数的构造方法,没有手动编写无参数构造方法时会出现啥问题

    • 报错:500
    • 500是HTTP协议的错误状态码
    • 500一般情况是因为服务器的java程序出现了异常(服务器端的错误都是500,指服务器内部错误)
    • 如果没有无参数的构造方法,会导致500错误,无法实例化Servlet对象
    • 在Servlet开发中,不建议程序员来定义构造方法,因为定义不当会导致无法实例化Servlet对象
  • 无参数构造方法不能代替init方法

  • init、service、destroy:

    • init、destroy方法都很少用
    • 通常在init方法中做初始化操作,例如初始化数据库连接池、初始化线程池
    • destroy中通常是关闭资源
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值