在通过一个URL路径发起对一个Servlet请求的过程中,其本质是在调用执行Servlet实例的doXXX()方法。该Servlet实例创建和使用的过程,被称为Servlet的生命周期。整个生命周期包括:实例化、初始化、服务、销毁。
生命周期的框架流程图:

Servlet请求的路径(例如:home.do),查找该Servlet的实例。如果实例不存在,则通过调用构造方法,完成Servlet实例的创建。
2.初始化:通过该Servlet的实例,调用init()方法,执行初始化的逻辑。

3.服务:通过该Servlet的实例,调用service()方法,如果子类没有重写该方法,则调用HttpServlet父类的service()方法,在父类的该方法中进行请求方式的判断,如果是GET请求,则调用doGet()方法;如果是POST请求,则调用doPost()方法;

如果子类重写doXXX()方法,则调用子类重写后的doXXX()方法;
如果子类没有重写doXXX()方法,则调用父类的doXXX()方法,在父类的方法实现中,返回一个405状态码的错误页面。
405状态码:代表请求的方式服务器不提供支持。

4.销毁:服务器关闭或重启时,会销毁所有的Servlet实例,会调用Servlet实例的destroy()方法。

实现过程为:


由以上结果我们可以知道在一个servlet生命周期中,实例化与初始化只有一次,服务可以多次。也就是说重复的请求操作只会创建一次实例,只会有一次初始化。