1.servlet是運行在服務端的java程序
2.servlet的生命周期
主要有三個方法:
init()初始化階段service()處理客戶端請求階段destroy()終止階段初始化階段:Servlet容器加載Servlet,加載完成後,Servlet容器會創建一個Servlet實例並調用init()方法,init()方法只會調用一次Servlet容器會在一下幾種情況裝載Servlet:
Servlet容器啟動時自動裝載某些servlet,實現這個需要在web.xml文件中添加<loadstartup>1</load-on-startup>在Servlet容器啟動後,客戶首次向Servlet發送請求Servlet類文件被更新後,重新裝載處理客戶端請求階段:每收到一個客戶端請求,伺服器就會產生一個新的線程去處理。對於用戶的Servlet請求,Servlet容器會創建一個特定於請求的ServletRequest和ServletResponse。對於tomcat來說,它會將傳遞來的參數放入一個HashTable中,這是一個String-->String[]的鍵值映射
終止階段:當web應用被終止,或者Servlet容器終止運行,或者Servlet重新裝載Servlet新實例時,Servlet容器會調用Servlet的destroy()方法
3.servlet的工作原理
客戶發送一個請求。Servlet調用service()方法對請求進行響應,service()方法會對請求的方法進行匹配,進入相應的邏輯層,完成請求的響應。
但是Servler接口和GenericServlet接口中沒有doGet(),doPost()等方法,HttpServlet中定義了這些,但是返回的都是Error信息,所以每次定義Servlet都要重寫這些方法。
Sertvlet和GenericServlet是不特定於任何協議的,而HttpServlet是特定於Http協議的,所以HttpServlet中的service()方法中將ServletRequest,ServletResponse強轉為HttpRequest和HttpResponse,最後調用自己的service方法去完成響應。