畫的不好,請將就。。。。
maven坐標獲取,直接百度maven倉庫,選擇第二個。
然後搜索Servlet選擇第二個。
創建一個類,不是介面,繼承下HttpServlet。
public interface Servlet {
//負責初始化 Servlet 對象。容器一旦創建好 Servlet 對象後,就調用此方法來初始化 Servlet 對象。 public void init(ServletConfig config) throws ServletException; //負責處理客戶的請求並返迴響應。當容器接收到客戶端要求訪問特定的 servlet 請 求時,就會調用 Servlet 的 service 方法 。
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
//Destroy()方法負責釋放 Servlet 對象佔用的資源,當 servlet 對象結束生命週期時, servlet 容器調用此方法來銷毀 servlet 對象。 public void destroy();
//說明:Init(),service(),destroy() 這三個方法是 Servlet 生命週期中的最重要的三個方法。
//返回一個字元串,在該字元串中包含 servlet 的創建者,版本和版權等信息 public String getServletInfo();
//GetServletConfig: 返回一個 ServletConfig 對象,該對象中包含了 Servlet 初始化參 數信息
init 方法接收一個 ServletConfig 參數,由容器傳入.ServletConfig 就是 Servlet 的配置,在 web.xml 中定義 Servlet 時通過 init-param 標籤配置的參數由 ServletConfig 保存
public interface ServletConfig {
}
ServletConfig 是 Servlet 級別,而 ServletContext 是全局的
//抽象類 GenericServlet 實現了 Servlet 介面的同時,也實現了 ServletConfig 介面和 Serializable 這兩個介面
implements Servlet, ServletConfig, java.io.Serializable
實現介面 Servlet 中的帶參數的 init(ServletConfig Config)方法,將傳遞的
**/
public void init(ServletConfig config) throws ServletException { this.config = config;
return config; }
--------------------------------------------- 以下四個方法實現了介面 ServletConfig 中的方法 實現 ServletConfig 介面開始
//獲取初始化參數
還有最底層的HttpServlet,這個就不說了,說下Tomcat的底層源碼。
Server
Service
Connector
Container
Engine
Tomcat的啟動流程
tomcat 的啟動流程很標準化,入口是 BootStrap,統一按照生命週期管理介面 Lifecycle 的定義進行啟動。首先,調用 init()方法逐級初始化,接著調用 start()方法進行啟動,同時, 每次調用伴隨著生命週期狀態變更事件的觸發。
Catalina
LifecycleEvent
Catalina 實現了對 tomcat 各種組件、容器統一的啟動和停止的方式。
server.xml 配置文件:
並載入 Server、Service、Connector、Container、Engine、 Host、Context、Wrapper 一系列的容器,載入完成後,調用 initialize()來開啟一個新的 Server
解析 server.xml 文件
service.initialize()