1. 程式人生 > >web---Servlet的生命週期以及Servlet與CGI的區別

web---Servlet的生命週期以及Servlet與CGI的區別

Servlet的生命週期

Servlet的生命週期可以分為例項化,初始化,服務,銷燬四個階段。

1.例項化和初始化階段:

如果Servlet在配置時配置了標籤,那麼在應用程式啟動時就會載入Servlet.class,並建立Servlet例項,然後呼叫init()方法初始化。
如果沒有配置標籤,那麼在servlet第一次呼叫時執行類載入,並且呼叫init()方法初始化。
初始化和例項化在整個生命週期只會執行一次,所以每個Servlet例項也僅僅只存在一個。

2.服務階段:

當請求匹配到servlet後,會呼叫Servlet的service()方法。
如果Servlet沒有重寫service()方法,而是重寫了doGet()方法或者doPost()方法,那麼會根據相應的請求呼叫相應的方法。
服務階段的方法會被多次執行即呼叫一次執行一次。

3.銷燬階段:

當應用程式從伺服器刪除或者伺服器停止,或者伺服器重啟時,會執行Servlet的destroy()方法進行銷燬操作。

Servlet和CGI的區別

CGI即通用閘道器介面,和Servlet類似,屬於開發動態網頁的技術。
CGI程式執行需要web伺服器的支援,例如Apache,而Servlet需要支援Javaee的web伺服器支援,例如Tomcat。
CGI可以支援多種語言開發,例如PHP,Perl,而Servlet只支援Java語言。
CGI是以程序為單位處理請求,而Servlet是以執行緒為單位處理請求,顯然在高併發的情況下,Servlet的效率要高