servlet生命周期:
- 加载和实例化。当servlet容器启动或客户端发送一个请求时,servlet容器会查找内存中是否存在该servlet的实例,若存在,则直接该实例响应请求,如果不存在,就创建一个servlet实例
- 初始化。实例化后,servlet容器将调用servlet的init()方法进行初始化,进行资源预加载等工作
- 服务。初始化后,servlet处于能响应请求的就绪状态。当接收到客户端请求时,调用service()方法处理客户端请求。HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法
- 销毁。当Servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放(或回收资源)。
总结:用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行。任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法。在service方法内部根据请求的方式的不同调用doXXX的方法。当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行。