Servlet_生命周期方法
1.被创建,执行init方法。执行一次
2.提供服务,执行service方法,执行多次
3.被销毁,执行destroy方法,执行一次
servlet的方法
1.init:初始化方法 。在Servlet被创建时,执行。只会执行一次
2.service:提供服务方法。每一次servlet被访问时候,执行。执行多次
3.destroy:销毁方法。在服务器正常关闭时,执行,执行一次
示例:
代码
public class servletdemo2 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init.........");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("hello servlet22222");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("destroy................");
}
}
执行多次,控制台结果:
4.getServletConfig:获取ServletConfig对象。ServletConfig:servlet的配置对象
5.getServletInfo:获取servlet的信息,版本,作者等等
Servlet_生命周期详解
1.被创建,执行init方法。执行一次
(1)servlet什么时候被创建?
①默认情况下,第一次被访问时,servlet被创建
②可以配置执行servlet的创建时机
在<servlet>标签下配置
1.第一次被访问是创建<load-on-startup>的值为负数
2.在服务器启动时创建<load-on-startup>的值为0或正数
(2)servlet的init方法只执行一次,说明一个servlet在内存中只存在一个对象,servlet是单例的。
问题:多个用户同时访问时,可能存在线程安全问题
解决:尽量不要在servlet中定义成员变量。即使定义了成员变量,也不要对其进行赋值
2.提供服务,执行service方法,执行多次
每次访问servlet时候,service都会被调用一次
3.被销毁,执行destroy方法,执行一次
(1)servlet被销毁时执行,服务器关闭,servlet被销毁。
(2)只有服务器正常关闭时候,才会执行destroy方法。
(3)destroy方法在servlet被销毁之前执行,一般用于释放资源