证明servlet Init() destroy() service()函数分别在什么时候会调用

servlet Init() destroy() service()函数分别在什么时候会调用?
请在如下三个函数内添加log,并实验证明。

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/life")
public class LifeTest extends GenericServlet {
    @Override
    public void destroy() {
        System.out.println("destroy method");
    }

    @Override
    public void init() throws ServletException {
        System.out.println("init method");
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service method");
    }
}
 <servlet>
        <servlet-name>life</servlet-name>
        <servlet-class>com.servlet.LifeTest</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

在这里插入图片描述

  • 初次访问servlet时调用init,只会调用一次,如果声明了loadOnStartup则可以随着程序的启动而执行
  • service在每次访问servlet时都会调用
  • destroy在关闭或者卸载时会被调用

有什么样的的意义呢?**

首先,生命周期函数本身的意义,对于init、destroy,如果你希望再servlet创建以及servlet被销毁的时候去做一些额外的事情,那么可以再init、destoy方法里面写对应的逻辑。

设置init load-on-startup非负数有什么样的意义呢?

  1. 比如说,当前servlet需要预先做一些运算,如果在第一次访问之前去执行,那么可能时间有点来不及,这个时候我就可以设置init方法随着应用的启动而执行,那么就有了更多的时间来运算。
  2. 比如对于一个商城来说,如果需要在页面加载当前商城里面商品的分类,并且将这个分类和其他的servlet所共享
  3. init—load-on-startup非负数
    init方法里面写入获取商品分类的逻辑,紧接着将这些数据和其他servlet共享。即便当前servlet没有被访问到,如果用户直接去访问另外一个servlet,是不是也可以取出里面的数据啊
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值