servlet对象的生命周期

  • servlet对象的生命周期:表示一个servlet对象从出生在最后死亡的整个过程。

  • Servlet对象的生命周期是由Tomcat服务器(Web Server)全权负责的,web开发程序员是无权干预的。

  • Web容器(Web Container)来管理Servlet对象的死活,Web容器创建的servlet对象都会被放到一个集合当中(HashMap),集合存储了servlet对象和请求路径之间的关系。我们自己手动new的servlet对象是不受Web容器管理的。

  • 默认情况下,服务器在启动的时候servlet对象并不会被实例化。若想要让服务器启动的时候创建servlet对象:可在servlet标签中添加<load-on-startup>子标签,在该子标签中填写整数,越小的整数优先级越高。

    <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.yaochung.servlet.helloServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>helloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

servlet对象生命周期:

默认情况下,服务器启动的时候helloServlet对象并没有被实例化

  1. 用户在发送第一次请求的时候servlet对象被实例化(helloServlet的无参数构造方法被执行了)
  2. helloServlet对象被创建出来之后,Tomcat服务器马上调用了helloServlet对象的init方法。(init方法在执行的时候,helloServlet对象已经存在了,已经被创建出来了)
  3. 用户发送第一次请求的时候,init方法执行之后,Tomcat服务器马上调用helloServlet对象的service方法
  4. 用户在发送第二次,或者第三次,或者第四次请求的时候,servlet对象并没有新建,还是使用之前创建好的servlet对象,直接调用该servlet对象的service方法(servlet对象是单例的,只要用户发送一次请求:service方法必然会被Tomcat服务器调用一次。发送100次请求,service方法会被调用100次。)
  5. servlet的destroy方法只被Tomcat服务器调用一次,是在服务器关闭的时候。服务器在销毁helloServlet对象内存之前,Tomcat服务器会自动调用helloServlet对象的destroy方法。(destroy方法执行的时候helloServlet对象还在,没有被销毁。destroy方法执行结束之后,helloServlet对象的内存才会被Tomcat释放)

servlet类中方法的调用次数:

  • 构造方法只执行一次。
  • init方法只执行一次。
  • service方法:用户发送一次请求则执行一次,发送N次请求则执行N次。
  • destroy方法只执行一次。

init、service、destroy方法中使用场景:

  • service方法:使用最多,service方法是一定要实现的,是处理用户请求的核心方法。

  • init方法:很少用,通常在init方法当中做初始化操作,并且这个初始化操作只需要执行一次。例:初始化数据库连接池,初始化线程池......

  • destroy方法:很少用,通常在destroy方法当中进行资源的关闭。例:对象马上要被销毁了,没有关闭的资源要关闭,没有保存的资源要保存。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值