建立一個類,實現 servlet 這個接口時,須要實現裏面的抽象方法。java
1 import javax.servlet.*; 2 import java.io.IOException; 3 4 public class ServletDemo implements Servlet { 5 public ServletDemo() { 6 System.out.println("一、構造器方法"); 7 } 8 /** 9 * 初始化方法,在servlet被建立時,執行,只會執行一次 10 * @param servletConfig 11 * @throws ServletException 12 */ 13 @Override 14 public void init(ServletConfig servletConfig) throws ServletException 15 System.out.println("二、初始化方法init..."); 16 } 17 18 /** 19 * 獲取servletconfig對象 20 * servletConfig:servlet的配置對象 21 * @return 22 */ 23 @Override 24 public ServletConfig getServletConfig() { 25 return null; 26 } 27 28 /** 29 * service:提供服務方法,專門用來處理請求和響應的 30 * 每一次servlet被訪問時,執行,執行屢次 31 * @param servletRequest 32 * @param servletResponse 33 * @throws ServletException 34 * @throws IOException 35 */ 36 @Override 37 public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { 38 System.out.println("三、服務方法service..."); 39 } 40 41 /** 42 * 獲取servlet的一些信息,如版本,做者等。。 43 * @return 44 */ 45 @Override 46 public String getServletInfo() { 47 return null; 48 } 49 50 /** 51 * 銷燬方法 52 * 在服務器正常關閉時,在servlet被殺死時,被執行,只執行一次 53 */ 54 @Override 55 public void destroy() { 56 System.out.println("四、銷燬方法destory..."); 57 } 58 }
執行 Servlet 構造器方法,通常是在第一次訪問 Servlet時,由Web容器(Tomcat)來建立 Servlet。web
Servlet何時被建立?安全
默認狀況下,Servlet 第一次被訪問,Servlet 被 Web 容器建立。服務器
能夠配置 Servlet 的建立時機ide
在 web.xml 中 <servlet> 標籤下配置 <load-on-startup>,默認值爲 -1。spa
① 第一次訪問時,建立,設置 <load-on-startup>的值爲負數線程
② 在服務器啓動時,建立,設置<load-on-startup>的值爲0或正整數code
1 <!--配置servlet--> 2 <servlet> 3 <!--servlet名稱--> 4 <servlet-name>demo1</servlet-name> 5 <!--servlet全類名--> 6 <servlet-class>cn.ks.web.servlet.ServletDemo1</servlet-class> 7 <!-- 建立時機--> 8 <load-on-startup>5</load-on-startup> 9 </servlet>
當類被建立後,馬上執行 init() 初始化方法,只執行一次。xml
Servlet的 init() 方法,只執行一次(通常用來加載資源),說明一個Servlet在內存中只存在一個對象,Servlet是單例的對象
a、多個用戶同時訪問時,可能存在線程安全問題。
b、解決:儘可能不要在Servlet中定義成員變量。即便定義了成員變量,也不要對修改值
該時期執行 service() 方法來提供服務,這個方法能夠執行屢次。每次訪問 servlet 時,Service 方法都會被調用一次。
被銷燬時,執行 destory() 方法,只執行一次
① Servlet被銷燬時執行。服務器關閉時,Servlet被銷燬
② 只有服務器正常關閉時,纔會執行destroy方法。
③ destroy方法在Servlet被銷燬以前執行,通常用於釋放資源