JavaWeb 之 Servlet的生命周期

Servlet 生命周期

1、实现重写servlet

  建立一个类,实现 servlet 这个接口时,须要实现里面的抽象方法。java

 1 import javax.servlet.*;  2 import java.io.IOException;  3  4 public class ServletDemo implements Servlet {  5 public ServletDemo() {  6 System.out.println("一、构造器方法");  7  }  8 /**  9  * 初始化方法,在servlet被建立时,执行,只会执行一次 10  * @param servletConfig 11  * @throws ServletException 12 */ 13  @Override 14 public void init(ServletConfig servletConfig) throws ServletException 15 System.out.println("二、初始化方法init..."); 16  } 17 18 /** 19  * 获取servletconfig对象 20  * servletConfig:servlet的配置对象 21  * @return 22 */ 23  @Override 24 public ServletConfig getServletConfig() { 25 return null; 26  } 27 28 /** 29  * service:提供服务方法,专门用来处理请求和响应的 30  * 每一次servlet被访问时,执行,执行屡次 31  * @param servletRequest 32  * @param servletResponse 33  * @throws ServletException 34  * @throws IOException 35 */ 36  @Override 37 public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { 38 System.out.println("三、服务方法service..."); 39  } 40 41 /** 42  * 获取servlet的一些信息,如版本,做者等。。 43  * @return 44 */ 45  @Override 46 public String getServletInfo() { 47 return null; 48  } 49 50 /** 51  * 销毁方法 52  * 在服务器正常关闭时,在servlet被杀死时,被执行,只执行一次 53 */ 54  @Override 55 public void destroy() { 56 System.out.println("四、销毁方法destory..."); 57  } 58 }

2、生命周期

  一、被建立时期

    执行 Servlet 构造器方法,通常是在第一次访问 Servlet时,由Web容器(Tomcat)来建立 Servlet。web

    Servlet何时被建立?安全

      默认状况下,Servlet 第一次被访问,Servlet 被 Web 容器建立。服务器

    能够配置 Servlet 的建立时机ide

      在 web.xml 中 <servlet> 标签下配置 <load-on-startup>,默认值为 -1。spa

      ① 第一次访问时,建立,设置 <load-on-startup>的值为负数线程

      ② 在服务器启动时,建立,设置<load-on-startup>的值为0或正整数code

1 <!--配置servlet--> 2 <servlet> 3 <!--servlet名称--> 4 <servlet-name>demo1</servlet-name> 5 <!--servlet全类名--> 6 <servlet-class>cn.ks.web.servlet.ServletDemo1</servlet-class> 7 <!-- 建立时机--> 8 <load-on-startup>5</load-on-startup> 9 </servlet>

  二、初始化时期

     当类被建立后,马上执行 init() 初始化方法,只执行一次。xml

    Servlet的 init() 方法,只执行一次(通常用来加载资源),说明一个Servlet在内存中只存在一个对象,Servlet是单例的对象

     a、多个用户同时访问时,可能存在线程安全问题。

     b、解决:尽可能不要在Servlet中定义成员变量。即便定义了成员变量,也不要对修改值

  三、服务时期

    该时期执行 service() 方法来提供服务,这个方法能够执行屡次。每次访问 servlet 时,Service 方法都会被调用一次。

  四、销毁时期

    被销毁时,执行 destory() 方法,只执行一次

      ① Servlet被销毁时执行。服务器关闭时,Servlet被销毁

      ② 只有服务器正常关闭时,才会执行destroy方法。

      ③ destroy方法在Servlet被销毁以前执行,通常用于释放资源  

相关文章
相关标签/搜索