1. 程式人生 > >初識JSP(三)

初識JSP(三)

自己 求一個 進行 功能 初始化 動態生成 直接 每一個 協議

  借助Java 的跨平臺特性,Servlet 被設計成一種獨立於平臺和協議的服務器端的 Java 應用程序,可以動態生成動態的Web頁面。Servlet 由 Web服務器進行加載,該Web 服務器必須包含支持 Servlet 的 Java 虛擬機。Servlet 不是獨立的 Java 應用程序, 沒有 main 方法,它不是由用戶直接調用,而是由容器調用的。

  JSP 編譯後就是 Servlet,但它並沒有增強 Servlet 的功能,只是比直接使用Servlet 進行編程更加方便。Servlet 采用請求響應的工作方式,Servlet 技術作為 Web 服務器功能的增強器,其功能涵蓋了從客戶端請求響應動態生成文檔到保證會話安全、訪問後臺數據庫服務器等。

  每個Servlet 都有自己的生命周期,都包含 init 和 destroy 方法,每個Servlet 都需要實現 Servlet 接口,其主要的邏輯將集中在 service 方法中。當一個請求映射到一個 Servlet 時,該容器執行下列步驟:

  •    如果一個 Servlet 的實例並不存在,Web 容器將加載 Servlet 類,創建一個Servlet類的實調用init 方法初始化 Servlet 實例。
  •    調用 service 方法,傳遞一個請求和響應對象。
  •    如果該容器要移除這個 Servlet,可調用Servlet 的destroy 方法來結束該Servlet。

  1. 加載和初始化

  在Servlet 的生命周期中,僅執行一次 init 方法,它是在服務器裝入 Servlet 時執行的。可以配置服務器,以便在啟動服務器或客戶機首次訪問Servlet 時裝入 Servlet。無論有多少客戶機訪問Servlet ,都不會重復執行init 方法。

  2.處理客戶端請求

  每一個請求由 ServletRequest 類型的對象代表,而 Servlet 使用 ServletResponse 返回該請求。這些對象被作為 service 方法的參數傳遞給 Servlet ,service 方法是 Servlet 的核心。每當一個客戶請求一個ServletRequest 對象時,該對象的service 方法就要被調用。

  當一個客戶通過HTML 表單發出一個 HTTP POST 請求時,doPost 方法被調用;當一個客戶通過HTML表單發出一個HTTP GET 請求或直接請求一個URL時,doGet方法被調用。與GET請求相關的參數添加到URL 的後面,並與這個請求一起發送。

  在HTTP 請求的情況下,容器必須提供代表請求和響應的 HttpServletRequest 和HttpServletResponse 的具體實現。

  3.服務結束

  destroy 方法和 init 方法一樣,僅執行一次,即在服務器停止且卸載Servlet 時執行該方法。當服務器卸載Servlet 時,將所有的 service 方法調用完成後,或指定的時間間隔過後調用destroy方法。一個Servlet 在運行 service 方法時可能會產生其他的線程,因此請確認在調用destroy 方法時,這些線程已終止或完成。一旦 destroy 方法被調用,容器就不會再向該實例發送任何請求;如果容器需要再使用該Servlet ,則必須創建新的實例。

  參考《J2EE核心技術與企業應用》

初識JSP(三)