我们一般都了解servlet的大致生命周期为:init->service->get\post\...->destroy,如下图:
原文:https://my.oschina.net/yangjianzhou/blog/1934286
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Servlet生命周期简述
(1)加载和实例化
当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。
(2) 初始化
实例化后,Servlet容器将调用Servlet的init()方法进行初始化(一些准备工作或资源预加载工作)。
(3)服务
初始化后,Servlet处于能响应请求的就绪状态。当接收到客户端请求时,调用service()的方法处理客户端请求,HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法。
(4)销毁
当Servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放(或回收资源)。
用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.
原文:https://www.cnblogs.com/kingofjava/p/10761669.html
-------------------------------------------------------------------------------------------------------------------------------------------------------------
Servlet_生命周期:首先加载servlet的class,实例化servlet,然后初始化servlet调用init()的方法,接着调用服务的service的方法处理doGet和doPost方法,最后是我的还有容器关闭时候调用destroy 销毁方法。
1.被创建:执行init方法,只执行一次
1.1Servlet什么时候被创建?
--默认情况下,第一次被访问时,Servlet被创建,然后执行init方法;
--可以配置执行Servlet的创建时机;
2.提供服务:执行service方法,执行多次
3.被销毁:当Servlet服务器正常关闭时,执行destroy方法,只执行一次
1 //servlet生命周期,的三个方法,1.被创建,执行且只执行一次init方法,2.提供服务,执行service方法,执行多次 3.被销毁,当Servlet服务器正常关闭时,执行destroy方法,只执行一次。
2
3 @Override
4 public void init() throws ServletException {
5 // TODO Auto-generated method stub
6 super.init();
7 }
8
9 @Override
10 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
11 // TODO Auto-generated method stub
12 super.service(req, resp);
13 }
14
15 @Override
16 public void destroy() {
17 // TODO Auto-generated method stub
18 super.destroy();
19 }
原文:https://www.cnblogs.com/abcdjava/p/11060945.html
-------------------------------------------------------------------------------------------------------------------------------------------------------------
1、加载:在下列时刻加载 Servlet:
(1)如果已配置自动加载选项,则在启动服务器时自动加载(web.xml中设置<load-on-start>)。
(2)在服务器启动后,客户机首次向Servlet发出请求时。
(3)重新加载Servlet时。(只执行一次)
2、实例化:加载Servlet后,服务器创建一个Servlet实例。(只执行一次)
3、初始化:调用Servlet的init()方法。在初始化阶段,Servlet 初始化参数被传递给Servlet配置对象ServletConfig。(只执行一次)
4、请求处理:对于到达服务器的客户机请求,服务器创建针对此次请求的一个“请求”对象和一个“响应”对象。服务器调用Servlet的service()方法,该方法用于传递“请求”和“响应”对象。service()方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。在service方法内部根据请求的方式的不同调用doXXX的方法。service()方法可以调用其它方法来处理请求,例如doGet()、doPost()或其它的方法。(每次请求都执行该步骤)
5、销毁:当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。(只执行一次)
原文:https://zq.zhaopin.com/zpdOutputQuestionForXZH/5192938