作者:溫學良 鏈接:https://www.zhihu.com/question/21416727/answer/82511153 來源:知乎 著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。 Web伺服器習慣處理靜態頁面,所以需要一個程式來幫忙處理動態請求(如當前時間)。Web ...
作者:溫學良
鏈接:https://www.zhihu.com/question/21416727/answer/82511153
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
Web伺服器習慣處理靜態頁面,所以需要一個程式來幫忙處理動態請求(如當前時間)。Web伺服器程式會將動態請求轉發給幫助程式,幫助程式處理後,返回處理後的靜態結果給web伺服器程式。這樣就避免了Web伺服器程式處理動態頁面。Servlet的本質是一個幫助程式。如下圖
Servlet工作流程分為三個階段。init(初始化),service(運行),destroy(銷毀)
,Servlet沒有main方法,所有行為由Container控制。Container就是一個java程式。在載入Servlet的.class
後,Servlet會由構造函數生成一個實例,然後Container調用init()
方法完成參數的初始化,接著調用service()方法,service會根據網頁的請求,調用doGet
或者doPost
方法,最後調用銷毀方法。整個流程如下圖: