完整代码实现
package servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(value = "/demo")
public class Test extends HttpServlet {
public Test(){
System.out.println("构造方法执行了");
}
@Override
public void init(){
System.out.println("初始化servlet方法执行了");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("servlet被创建了");
}
@Override
public void destroy(){
System.out.println("servlet被销毁了");
}
}
启动项目之后控制台输出
发现:无论发送多少次请求,构造方法和初始化方法只会执行一次。而service每次请求都会被执行。
证明servlet为单例模式. 节约内存空间。
当服务器tomcat重启或者重写部署项目,那么servlet就会被销毁
上面当你第一次通过浏览器访问servlet时才会被创建和初始化。也可以通过配置当tomcat启动时就创建和初始化servlet,类似与单例模式中饿汉式。 加上loadOnStartup=0(只需要大于-1时即可)