Servlet 介紹

  1. Java Servlet 是運行在Web 服務器或應用服務器上的程序。它是作爲來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。使用 Servlet,您可以收集來自網頁表單的用戶輸入,呈現來自數據庫或者其他源的記錄,還可以動態創建網頁。
  2. Servlet 與CGI 有以下幾個優點:
    • 性能明顯更好。
    • Servlet 在 Web 服務器的地址空間內執行。這樣它就沒有必要再創建一個單獨的進程來處理每個客戶端請求。
    • Servlet 是獨立於平臺的,因爲它們是用 Java 編寫的。
    • Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、數據庫或其他軟件進行交互。
  3. Servlet的任務:
    • 讀取客戶端(瀏覽器)發送的顯式的數據。這包括網頁上的 HTML 表單,或者也可以是來自 applet自定義的 HTTP 客戶端程序的表單
    • 讀取客戶端(瀏覽器)發送的隱式的 HTTP 請求數據。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。
    • 處理數據並生成結果。這個過程可能需要訪問數據庫,執行 RMI 或 CORBA 調用,調用 Web 服務,或者直接計算得出對應的響應。
    • 發送顯式的數據(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)、二進制文件(GIF 圖像)、Excel 等。
    • 發送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設置 cookies 和緩存參數,以及其他類似的任務。
  4. Servlet 生命週期
    • init()方法進行初始化
    • service()方法處理客戶端的請求
    • destroy()方法終止
    • 最後由JVM垃圾回收器進行垃圾回收
  5. init()方法被設計成調用一次。它在第一次創建servlet時被調用。在後續每次用戶請求時不再調用。當用戶調用一個servlet時就會創建一個servlet實例,每個用戶請求都會產生一個新的線程。
public void init() throws ServletException {
  // 初始化代碼...
}
  1. service()方法是執行實際任務的主要方法。servlet調用service()方法類處理客戶端的請求,並把格式化的響應寫會客戶端。service() 方法檢查 HTTP 請求類型(GET、POST、PUT、DELETE 等),並在適當的時候調用 doGet、doPost、doPut,doDelete 等方法。然後 Servlet 容器處理由多個線程產生的多個請求,每個線程執行一個單一的 Servlet 實例的 service() 方法
public void service(ServletRequest request, 
                    ServletResponse response) 
      throws ServletException, IOException{
}
  1. doGet()方法。請求指定頁面信息。
public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代碼
}
  1. doPost()方法。POST 請求來自於一個特別指定了 METHOD 爲 POST 的 HTML 表單,它由 doPost() 方法處理。
public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代碼
}
  1. doDestroy()方法。destroy() 方法只會被調用一次,在 Servlet 生命週期結束時被調用。destroy() 方法可以讓您的 Servlet 關閉數據庫連接停止後臺線程、把 Cookie 列表或點擊計數器寫入到磁盤,並執行其他類似的清理活動。在調用 destroy() 方法之後,servlet 對象被標記爲垃圾回收。
public void destroy() {
    // 終止化代碼...
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章