一:Servlet是什么
Servlet是運行在Web服務器上的Java程序,作為處理來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。JSP在web服務器上要先轉換成servlet,然后才能在JVM運行,並把結果拼接成瀏覽器可識別的文件(如html)傳回瀏覽器顯示。
二:Servlet的應用場景
單純地對客戶端的請求做處理時,如果我們用純JSP文件(即:只有Java語句)來處理的話,還需要先轉換為servlet才能運行。與其這樣,我們可以直接定義servlet文件來處理來自頁面的請求。
三:Servlet的生命周期
Servlet的生命周期主要有三個階段:初始化——服務——銷毀。
創建:調用Servlet接口的init()方法,並將產生的ServletConfig對象當作參數傳入。在Servlet的生命周期中,僅執行一次init()方法。它在web服務器裝入Servlet時執行,負責初始化Servlet對象。同一個類型的Servlet對象在web服務器中以單例的形式存在。
init()方法是servlet生命的起點。一旦加載了某個servlet,服務器將立即調用它的init()方法。
服務:每一次請求來到容器時,會產生HttpServletRequest與HttpServlceResponse對象,並作為參數傳給Service()。Service()負責響應客戶的請求。每當一個客戶請求一個HttpServlet對象,該對象的Service()方法就要被調用,而且傳遞給這個方法一個“請求”(ServletRequest)對象和一個“響應”(ServletResponse)對象作為參數。然后該方法自動進行匹配(根據request類型),調用doGet()或doPost()方法來處理請求。
HttpServlet是GenericServlet的子類。
GenericServlet是個抽象類,必須給出子類才能實例化。它給 出了設計servlet的一些骨架,定義了servlet生命周期,還有一些得到名字、配置、初始化參數的方法,其設計的是和應用層協議無關的,也就是說 你有可能用非http協議實現它。
HttpServlet是子類,當然就具有GenericServlet的一切特性,還添加了doGet, doPost, doDelete, doPut, doTrace等方法對應處理http協議里的命令的請求響應過程。
一般沒有特殊需要,自己寫的Servlet都擴展HttpServlet 。
銷毀:在服務器端停止且卸載Servlet時調用destroy(),釋放占用的資源。