Servlet工作流程


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文件名。

*(星號)符號表示此目錄的所有文件(包括子目錄)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM