作者:溫學良
鏈接: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
方法,最后調用銷毀方法。整個流程如下圖: