servlet的生命週期


 2人閱讀 評論(0) 收藏 舉報
Servlet基礎Servlet容器(以前稱Servelt引擎)實際上是執行servlet的軟件。所有支持servlet的服務器包括一個servelt容器(集成的或通過插件。)術語支持java的服務器常指一個增強的servletHTTP服務器(即它包括一個用於運行servlet的 servlet容器) Servlet生命週期:以下是一個服務器調用servlet的過程。 1, 在服務器啓動時,當servlet被客戶首次請求或被配置好,這時由服務器加載servlet.Servlet的加載可以通過合用一個自定義的Java類加載工具(可允許自動Servlet重載)從本地或遠程地址來實現。這一步等同於 Class c = Class.forName(“com.sourceStream.MyServlet”);這裏用的術語加載指同時加載和初始化servlet的過程。 2.服務器創建一個servlet類實例來爲所有請求服務。利用多線程,可以由單個servlet實例來服務於並行的請求。惟五的例外是,因爲實現SingleThreadModel接口的servlet,這樣,服務器會創建一個實例池並從中選擇一個來服務於每一新的請求。此步相當於以下java代碼:Servlet s = (Servlet)c.newInstance();3. 服務器調用Servlet的init()方法。它用來保證完成在首次請求servlet處理以前的執行過程。如果servlet創建了多個servlet實例,則爲每個實例調用一次init()方法。 4.服務器從包括在客戶請求中的數據裏構造一個ServletRequest或HttpServletRequest對象,還構造一個ServletResponse或HttpServletResponse對象來返回響應提供方法。其參數類型依賴於servlet是否分別擴展GenericServlet或HttpServlet.(注意:如果服務器沒有收到對這一servlet的請求,此步驟與以下5---7步驟將不會發生。) 5.服務器調用servlet的service()方法(對於Httpservlet,service()將調用更爲具體的方法:如:doGet() 或doPost()),在此步驟中作爲參數傳遞結構化對象。當並行的請求到來時,多個service()方法能夠同時運行在獨立的線程中。(除非servlet實現了SingleThreadModel接口) 6通過分析ServletReuest或HttpServletRequest對象。Service()方法處理客戶的請求.並調用ServletResponse或HttpServletResponse對象來響應。 7.如果服務器收到另一胩對該servlet的請求,這個處理過程從5步驟重複。 8.一旦servlet容器檢測到一個servlet要被卸載,這可能是因爲要回收資源或因爲它正在被關閉,服務器會在所有servlet的service()線程完成之後(或在服務器規定時間後)調用servlet的destroy()方法。然後servlet就可以進行無用存儲單元收集清理。Servlet容器不需要爲保留一個servlet而指定時間。 以上8個步驟就是servlet的生命週期
發佈了70 篇原創文章 · 獲贊 31 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章