Servlet工作原理

一、Servlet工作原理

 

     Servlet是運行在Servlet容器中的,由Servlet容器來負責Servlet實例的查找、創建以及整個生命週期的管理,Servlet整個生命週期可以分爲四個階段:類裝載及實例創建階段、實例初始化階段、服務階段以及實例銷燬階段。

類裝載及實例創建階段

 

      默認情況下,Servlet實例是在接受到第一個請求時進行創建並且以後的請求進行復用,如果有Servlet實例需要進行一些複雜的操作,需要在初始化時就完成,比如打開文件、初始化網絡連接等,可以配置在服務器啓動時就創建實例,具體配置方法爲在聲明servlet標籤中添加<load-on-startup>1</load-on-startup>標籤。

初始化 init(ServletConfig config)

 

     一旦Servlet實例被創建,將會調用Servlet的inint方法,同時傳入ServletConfig實例,傳入Servlet的相關配置信息,init方法在整個Servlet生命週期中只會調用一次。

服務 services()

 

     爲了提高效率,Servlet規範要求一個Servlet實例必須能夠同時服務於多個客戶端請求,即service()方法運行在多線程的環境下,Servlet開發者必須保證該方法的線程安全性。    

銷燬 destory()

 

      當Servlet容器將決定結束某個Servlet時,將會調用destory()方法,在destory方法中進行資源釋放,一旦destory方法被調用,Servlet容器將不會再發送任何請求給這個實例,若Servlet容器需再次使用該Servlet,需重新再實例化該Servlet實例。

 

二、Servlet執行流程

 

web服務器接受到一個http請求後,web服務器會將請求移交給servlet容器,servlet容器首先對所請求的URL進行解析並根據web.xml 配置文件找到相應的處理servlet,同時將request、response對象傳遞給它,servlet通過request對象可知道客戶端的請求者、請求信息以及其他的信息等,servlet在處理完請求後會把所有需要返回的信息放入response對象中並返回到客戶端,servlet一旦處理完請求,servlet容器就會刷新response對象,並把控制權重新返回給web服務器。

 

三、與其它技術的比較

 

   與其它服務相比servlet有以下的一些優點:

 

1、運行速度上比CGI快,因爲使用了多線程

2、servlet使用了標準的api,可被許多web服務支持

3、與系統無關性,一次編譯多次使用

 

轉自http://www.javaeye.com/topic/952866

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章