初識Servlet—Servlet生命週期

Servletjava的一個類,定義在javax.servlet包下。Servlet是由服務器負責管理運行,當多個 客戶請求同一個Servlet時,服務器爲每個客戶啓動一個線程而不是一個進程,這些線程由服務器 統一管理。

Servlet是運行在服務器端的,由服務器進行初始化。與Servlet生命週期相關的函數有:init()、service()、destroy()。

(1)init():初始化servletServlet第一次被請求加載時,服務器初始化這個servlet,即創建 一個servlet對象,該對象調用init()方法完成必要的初始化工作。該方法是Servlet類中的方法,

我們可以在servlet中重寫這個方法。方法描述:

public void init(ServletConfig config) throws ServletException

servlet第一次被請求加載時,服務器初始化一個servlet,即創建一個servlet對象,這個對象調用init方法完成必要的初始化工作。該方法在執行時,servlet引擎會把一個SevletConfig類型的對象傳遞給init()方法,這個對象就被保存在servlet對象中,直到servlet對象被消滅,這個ServletConfig對象負責向servlet傳遞服務設置信息,如果傳遞失敗就會發生ServeletExceptionservlet就不能正常工作。

我們已經知道,當多個客戶請求一個servlet時,引擎爲每個客戶啓動一個線程,那麼servlet類的成員變量被所有的線程共享。

(2)Service():當客戶對servlet進行請求,服務器執行該方法以響應客戶請求。該方法是 Servlet類中的方法,我們可以在servlet中直接繼承該方法或重寫這個方法。方法描述:

public void service(HttpServletRequest request HttpServletResponse response) throw

ServletException,IOException

servlet成功創建和初始化之後,servlet就調用service方法來處理用戶的請求並返回響應。Servlet引擎將兩個參數傳遞給該方法,一個ServletRequest類型的對象,該對象封裝了用戶的請求信息,此對象調用相應的方法可以獲取封裝的信息,即使用這個對象可以獲取用戶提交的信息。另外一個參數對象是ServletResponse類型的對象,該對象用來響應用戶的請求。和init方法不同的是,init方法只被調用一次,而service方法可能被多次的調用,我們已經知道,當後續的客戶請求servlet服務時,Servlet引擎將啓動一個新的線程,在該線程中,servlet調用service方法響應客戶的請求,也就是說,每個客戶的每次請求都導致service方法被調用執行,調用過程運行在不同的線程中,互不干擾。每一次客戶請求service方法都被調用一次,且服務器均會爲每一次請求創建ServletRequestServletResponse對象

(3)Destroy():當該servlet被移除或服務器被關閉時服務器調用該方法消滅servlet對象。

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Hello extends HttpServlet

public void init(ServletConfig config) throws ServletException

{

super.init(config);

}

public void service(HttpServletRequest reqest,HttpServletResponse response) throws IOException

{ //獲得一個向客戶發送數據的輸出流:

PrintWriter out=response.getWriter();

response.setContentType("text/html;charset=GB2312");//設置響應的MIME類型。

out.println("<HTML> <BODY>");

out.println("Simple servlet");

out.println("</body> </html>");

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章