如何加深對Servlet及其工做模式的理解

學Java Web開發的同窗都會接觸到Servlet,可能在剛剛開始認識Servlet的時候並不可以準確理解它的本質。筆者認爲,對於Servlet的準確理解和定位就是Servlet是一個Java接口。那麼對於咱們開發者而言什麼是接口?其實接口就是一種規範。這種規範可以幫助咱們在Web上與服務器產生數據交互,從而生成動態的Web。理論上,Servlet可以對任何類型的請求作出響應,因此,全部須要進行網絡請求的類均可以經過Servlet來實現。因此,在開發Java服務器程序的時候,Servlet是一個不可或缺的部分。
在瞭解了什麼是Servlet以後,還須要進一步瞭解Servlet的本質是什麼?
Web服務器習慣處理靜態頁面,因此須要一個程序來幫忙處理動態請求(如當前時間)。Web服務器程序會將動態請求轉發給幫助程序,幫助程序處理後,返回處理後的靜態結果給web服務器程序。這樣就避免了web服務器程序處理動態頁面。Servlet的本質是一個幫助程序。在瞭解了Servlet的本質以後,咱們能夠進一步來了解Servlet的主要方法和生命週期:
能夠說 servlet的本質是接口,tomcat服務器上的一個對外接口。
Servlet中的主要方法:
init():servlet的初始化方法,僅僅執行一次;
service():處理請求和生成響應;
destroy():在服務器中止而且程序中的Servlet對象再也不使用的
時候調用,只執行一次;
生命週期:
實例化 Servlet¬——當Servlet容器啓動或者容器檢測到客戶端請求時;
初始化 Servle——實例化後,容器調用Servlet的init()初始化對象;
處理請求 Servlet——獲得客戶端請求並作出處理時;
銷燬 Servlet——當程序中的Servlet對象再也不使用的時候,或者Web服務器中止運行的時候
Servlet就是個類,能夠把先它當作一個普通的類。
這個類最開始由容器好比tomcat加載並實例化。尚學堂陳老師強調在加載並實例化以後、初始化以前它就是個普通的類對象,以後容器會調用它的init方法並把servletconfig對象做爲參數傳給它,而後這個時候這貨就變成一個名副其實的servlet了,而後纔有資格接受瀏覽器的請求。而後若是是在mvc模式下,就做爲控制器運行,進行邏輯運算。
那麼Servlet的工做模式大概能夠歸納爲如下幾點:
一、客戶端請求該Servlet;加載Servlet類到內存;實例化並調用init()方法初始化該 Servlet;
二、service()(根據請求方法不一樣調用doGet() 或者 doPost(),此外還有doHead()、doPut()、doTrace()、doDelete()、doOptions());
三、加載和實例化 Servlet。這項操做通常是動態執行的。然而,Server 一般會提供一個管理的選項,用於在 Server 啓動時強制裝載和初始化特定的 Servlet;
四、Server 建立一個Servlet的實例;
五、第一個客戶端的請求到達Server;
六、Server 調用 Servlet 的 init() 方法(可配置爲 Server 建立 Servlet 實例時調用,在 web.xml 中 <servlet> 標籤下配置 <load-on-startup> 標籤,配置的值爲整型,值越小 Servlet 的啓動優先級越高);
七、一個客戶端的請求到達 Server;
八、Server 建立一個請求對象,處理客戶端請求;Server 建立一個響應對象,響應客戶端請求;
九、Server 激活 Servlet 的 service() 方法,傳遞請求和響應對象做爲參數;
十、service() 方法得到關於請求對象的信息,處理請求,訪問其餘資源,得到須要的信息;
十一、service() 方法使用響應對象的方法,將響應傳回Server,最終到達客戶端。service()方法可能激活其它方法以處理請求,如doGet() 或 doPost() 或程序員本身開發的新的方法;
十二、對於更多的客戶端請求,Server 建立新的請求和響應對象,仍然激活此 Servlet 的 service() 方法,將這兩個對象做爲參數傳遞給它。如此重複以上的循環,但無需再次調用 init() 方法。通常 Servlet 只初始化一次(只有一個對象),當 Server 再也不須要 Servlet 時(通常當 Server 關閉時),Server 調用 Servlet 的 destroy() 方法。程序員

以上內容從Servlet的本質、主要方法、生命週期和工做模式四個方面對Servlet進行較爲細緻的認識,在下面的視頻教程中,也有對Servlet的詳細講解,相信可以對正在學Java的你有所幫助。
 web

相關文章
相關標籤/搜索