• servlet对象的生命周期


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

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

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

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

      1. <servlet>
      2.    <servlet-name>helloServletservlet-name>
      3.    <servlet-class>com.yaochung.servlet.helloServletservlet-class>
      4.    <load-on-startup>1load-on-startup>
      5. servlet>
      6. <servlet-mapping>
      7.    <servlet-name>helloServletservlet-name>
      8.    <url-pattern>/hellourl-pattern>
      9. 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方法当中进行资源的关闭。例:对象马上要被销毁了,没有关闭的资源要关闭,没有保存的资源要保存。

  • 相关阅读:
    JavaWeb(三)
    卫浴服务信息展示预约小程序的作用如何
    Selenium安装WebDriver最新Chrome驱动(含116/117/118/119)
    React组件间性能优化
    python项目实战——银行取款机系统(一)
    YOLOX代码、预测(使用摄像头实时预测)及其添加SE注意力前后的实验结果
    高精定位市场上,蓝牙AOA如何破局?
    算法ppt练习题(给黄成个大逼兜)
    Redis实战之缓存:查询、添加缓存、更新缓存、缓存预热、缓存穿透、缓存雪崩、缓存击穿 解决方案及实例代码
    JAVA计算机毕业设计电影评分网站Mybatis+系统+数据库+调试部署
  • 原文地址:https://blog.csdn.net/YaoChung/article/details/126197049