Sevlet的生命周期
引入
Servlet的生命周期: servlet类对象什么时候创建,什么时候调用什么方法,什么时候销毁。
以前的对象: new Student(); stu.study(); stu=null;
Servlet程序的生命周期由tomcat服务器控制的!!!!
Servlet重要的四个生命周期方法
构造方法: 创建servlet对象的时候调用。默认情况下,第一次访问servlet的时候创建servlet对象 只调用1次。证明servlet对象在tomcat是单实例的。
init方法: 创建完servlet对象的时候调用。只调用1次。
service方法: 每次发出请求时调用。调用n次。
destroy方法: 销毁servlet对象的时候调用。停止服务器或者重新部署web应用时销毁servlet对象。只调用1次。
LifeDome.java
package day0228;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LifeDemo extends HttpServlet {
/*
* 1.构造方法
*/
public LifeDemo() {
System.out.println("1.Servlet对象被创建了。");
}
/*
* 2.init方法
* (non-Javadoc)
* @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
*/
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
// super.init(config);
System.out.println("2.init方法被调用");
}
/*
* 3.service方法
* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
// super.service(arg0, arg1);
System.out.println("3.service方法被调用");
}
/*
* 4.destory方法
* (non-Javadoc)
* @see javax.servlet.GenericServlet#destroy()
*/
@Override
public void destroy() {
// TODO Auto-generated method stub
// super.destroy();
System.out.println("4.destory对象被销毁了");
}
}
配置web.xml
<!-- 配置一个servlet -->
<!-- servlet的配置 -->
<servlet>
<!-- servlet的内部名称,自定义,尽量有意义 -->
<servlet-name>LifeDemo</servlet-name>
<!-- servlet的类全名:包名+简单类名 *.java-Copy Qualifild Name -->
<servlet-class>day0228.LifeDemo</servlet-class>
</servlet>
<!-- servler的映射配置 -->
<servlet-mapping>
<!-- servlet的内部名称,和上面一致!! -->
<servlet-name>LifeDemo</servlet-name>
<!-- servlet的映射路径(访问servlet的名称) -->
<url-pattern>/first</url-pattern>
</servlet-mapping>
第一次访问
1.Servlet对象被创建了。
2.init方法被调用
3.service方法被调用
第二次访问之后不再创建Servlet对象,init方法也不再调用
对象和初始化只调用一次
destroy方法
重新部署(回收内存)时调用,或者关闭服务器(回收内存)时调用