init(); service(); destroy(); 是Servlet生命周期的方法,代表了Servlet从 "初始化" - "提供服务" - "销毁" 的过程。
-
init():初始化方法。在Servlet被创建时执行,但只会执行一次。我们可以利用init( )方法来执行相应的初始化工作。调用这个方法时,Servlet容器会传入一个ServletConfig对象进来从而对Servlet对象进行初始化。
-
service():提供服务方法。每一次Servlet被访问时执行,执行多次。第一次请求时,Servlet容器会先调用init( )方法初始化一个Servlet对象出来,然后会调用它的service( )方法进行工作,但在后续的请求中,Servlet容器只会调用service方法了。
-
destory():销毁方法。在服务器被正常关闭时执行,执行一次。一般在这个方法中会写一些清除代码。
下面是Servlet生命周期的例子:
public class ServletTest implements Servlet {
/*初始化方法
* 在Servlet被创建时,执行 但只会执行一次*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init()执行了......");
System.out.println("初始化一个Servlet对象,但是这个方法在后续请求中不会在被Servlet容器调用");
}
/*获取ServletConfig对象
* ServletConfig: Servlet的配置对象*/
@Override
public ServletConfig getServletConfig() {
return null;
}
/*提供服务方法
* 每一次Servlet被访问时,执行,执行多次*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service()执行了.......");
System.out.println("每当请求Servlet时,Servlet容器就会调用这个方法");
}
//获取一些Servlet的信息,版本,作者等。。。。
@Override
public String getServletInfo() {
return null;
}
/*销毁方法
* 在服务器被正常关闭时,执行,执行一次*/
@Override
public void destroy() {
System.out.println("Servlet将要销毁了.......");
System.out.println("当要销毁Servlet时,Servlet容器就会调用这个方法");
}
}
运行后多次刷新会得到以下结果:
注意:
需要在web.xml中正确配置
如我的这个例子
<servlet>
<servlet-name>test1</servlet-name>
<servlet-class>ServlerDemo.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test1</servlet-name>
<url-pattern>/ServletTest1</url-pattern>
</servlet-mapping>