BlogJava 首頁 新隨筆 聯系 聚合 管理
            37 Posts :: 64 Stories :: 21 Comments :: 0 Trackbacks

          以下內容摘自<<精通 servlet>>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.
          服務器調用Servletinit()方法。它用來保證完成在首次請求servlet處理以前的執行過程。如果servlet創建了多個servlet實例,則為每個實例調用一次init()方法。
          4
          服務器從包括在客戶請求中的數據里構造一個ServletRequestHttpServletRequest對象,還構造一個ServletResponseHttpServletResponse對象來返回響應提供方法。其參數類型依賴于servlet是否分別擴展GenericServletHttpServlet.(注意:如果服務器沒有收到對這一servlet的請求,此步驟與以下5---7步驟將不會發生。)
          5
          服務器調用servletservice()方法(對于Httpservletservice()將調用更為具體的方法:如:doGet()doPost()),在此步驟中作為參數傳遞結構化對象。當并行的請求到來時,多個service()方法能夠同時運行在獨立的線程中。(除非servlet實現了SingleThreadModel接口)
          6通過分析ServletReuestHttpServletRequest對象Service()方法處理客戶的請求.并調用ServletResponseHttpServletResponse對象來響應。 7如果服務器收到另一格對該servlet的請求,這個處理過程從5步驟重復 8一旦servlet容器檢測到一個servlet要被卸載,這可能是因為要回收資源或因為它正在被關閉,服務器會在所有servletservice()線程完成之后(或在服務器規定時間后)調用servletdestroy()方法。然后servlet就可以進行無用存儲單元收集清理。Servlet容器不需要為保留一個servlet而指定時間。以上8個步驟就是servlet的生命周期。(

          posted on 2009-09-22 11:05 xiachang88 閱讀(274) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 玛多县| 通州市| 岳西县| 丰都县| 兰考县| 威宁| 昔阳县| 东乡县| 金溪县| 九台市| 宁化县| 阜南县| 海林市| 丽水市| 治多县| 合川市| 孙吴县| 沙雅县| 六安市| 青河县| 巢湖市| 泾源县| 木兰县| 凤翔县| 安平县| 砚山县| 称多县| 开鲁县| 崇仁县| 遵义市| 华池县| 河津市| 海宁市| 醴陵市| 邯郸县| 启东市| 闻喜县| 故城县| 灵台县| 临澧县| 兴山县|