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