1.加載Servlet類
類加載器負責加載servlet類。 當Web容器接收到servlet的第一個請求時,將加載servlet類。
2.創建Servlet實例
Web容器在加載servlet類之后創建一個servlet的實例。servlet實例在servlet生命周期中只創建一次。
3.調用init方法
Web容器在創建servlet實例后調用init
方法一次。 init
方法用於初始化servlet。 它是javax.servlet.Servlet
接口的生命周期方法。
4.調用service方法
每當接收到servlet的請求時,Web容器都會調用service
方法。如果servlet未初始化,則遵循上述前三個步驟,然后調用service
方法。 如果servlet被初始化,它調用service
方法。 請注意,servlet僅初始化一次。
5.調用destroy方法
從服務中刪除servlet實例之前,Web容器調用destroy
方法。它使servlet有機會清理所有資源,例如內存,線程等。
服務器檢查servlet是否為第一次被請求? 如果是第一次被請求,則 - •加載servlet類。 •實例化servlet類。 •調用init方法傳遞ServletConfig對象 如果不是第一次被請求,則 - •調用service方法傳遞請求和響應對象 Web容器在需要刪除servlet時調用destroy方法,例如:在停止服務器或取消部署項目時。 Web容器如何處理servlet請求? Web容器負責處理請求。下面來看看看它如何處理請求。 •將請求與web.xml文件中的servlet進行映射。 •為請求創建請求和響應對象 •調用線程上的service方法 •公共service方法內部調用受保護的service方法 •受保護的service方法根據請求的類型調用doGet方法。 •doGet方法生成響應,並將其傳遞給客戶端。 •發送響應后,Web容器將刪除請求和響應對象。線程包含在線程池中或刪除取決於服務器實現
公共service
方法將ServletRequest
對象轉換為HttpServletRequest
類型和ServletResponse
對象轉為HttpServletResponse
類型。然后調用傳遞這些對象的service
方法。
受保護的service方法檢查請求的類型,如果請求類型為get,則調用doGet方法,如果請求類型為post,則調用doPost方法
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String method = req.getMethod(); if(method.equals("GET")) { long lastModified = getLastModified(req); if(lastModified == -1L) { doGet(req, resp); } .... //rest of the code } }
打war包
jar -cvf projectname.war *
這里,-c
用於創建文件-v
生成詳細輸出,-f
用於指定war
文件名。
*
(星號)符號表示此目錄的所有文件(包括子目錄)。