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 閱讀(278) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 苍梧县| 厦门市| 区。| 津南区| 邵东县| 修文县| 高尔夫| 会理县| 会宁县| 繁昌县| 九龙坡区| 满城县| 屯门区| 石阡县| 开平市| 永修县| 朝阳市| 紫云| 鄂托克前旗| 宝清县| 连南| 江孜县| 齐齐哈尔市| 南昌县| 博湖县| 永德县| 和顺县| 崇仁县| 耿马| 武冈市| 昌宁县| 新平| 乌拉特前旗| 白山市| 阜南县| 商河县| 高青县| 泉州市| 阿城市| 图片| 宁阳县|