回顾servlet生命周期(代码测试)

代码部分很简单,只需要新建一个serlet,继承自HttpServlet,重写init,doGet,doPost,destory方法即可,使用注解@WebServlet注解分别测试存在loadOnStartup 和不存在loadOnStartup情况

package com.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(value = "/my", loadOnStartup = 0)
public class MyServlet extends HttpServlet {

    public MyServlet() {
        System.out.println("create");
    }

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

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("service");
    }

    @Override
    public void destroy() {
        System.out.println("destory");
    }

}

一、当配置有loadOnStartup且值大于等于0时,web服务器启动即会创建和初始化该servlet,且loadOnStartup数值越小,越优先执行,后续每次访问该servlet,将会调用一次service服务(doGet/doPost),关闭web服务,调用destory方法,销毁servlet

二、当未配置loadOnStartup时,web服务器启动时不会初始化该servlet,当第一次访问该servlet时,才会进行创建并初始化,后续每次访问该servlet,都将会调用一次service服务(doGet/doPost),关闭web服务,调用destory方法,销毁servlet。

猜你喜欢

转载自www.cnblogs.com/qq931399960/p/10283952.html