1. 被建立:执行init方法,只执行一次 * Servlet何时被建立? * 默认状况下,第一次被访问时,Servlet被建立 * 能够配置执行Servlet的建立时机。 * 在<servlet>标签下配置 1. 第一次被访问时,建立 * <load-on-startup>的值为负数 2. 在服务器启动时,建立 * <load-on-startup>的值为0或正整数 * Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的 * 多个用户同时访问时,可能存在线程安全问题。 * 解决:尽可能不要在Servlet中定义成员变量。即便定义了成员变量,也不要对修改值 2. 提供服务:执行service方法,执行屡次 * 每次访问Servlet时,Service方法都会被调用一次。 3. 被销毁:执行destroy方法,只执行一次 * Servlet被销毁时执行。服务器关闭时,Servlet被销毁 * 只有服务器正常关闭时,才会执行destroy方法。 * destroy方法在Servlet被销毁以前执行,通常用于释放资源
package cn.itcast.web.servlet;java
import javax.servlet.*;
import java.io.IOException;web
/**tomcat
*/
public class ServletDemo1 implements Servlet {安全
@Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } //提供服务的方法 @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("Hello Servlet"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { }
}
package cn.itcast.web.servlet;服务器
import javax.servlet.*;
import java.io.IOException;ide
/**spa
*/
public class ServletDemo2 implements Servlet {线程
private int age = 3; /** * 初始化方法 * 在Servlet被建立时,执行。只会执行一次 * @param servletConfig * @throws ServletException */ @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init....."); } /** * 获取ServletConfig对象 * ServletConfig:Servlet的配置对象 * @return */ @Override public ServletConfig getServletConfig() { return null; } /** * 提供服务方法 * 每一次Servlet被访问时,执行。执行屡次 * @param servletRequest * @param servletResponse * @throws ServletException * @throws IOException */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service....."); int number = 3; } /** * 获取Servlet的一些信息,版本,做者等等。。 * @return */ @Override public String getServletInfo() { return null; } /** * 销毁方法 * 在服务器正常关闭时,执行,执行一次。 */ @Override public void destroy() { System.out.println("destroy....."); }
}code