/* *作者:呆萌老師 *☑csdn認證講師 *☑51cto高級講師 *☑騰訊課堂認證講師 *☑網易雲課堂認證講師 *☑華為開發者學堂認證講師 *☑愛奇藝千人名師計劃成員 *在這裡給大家分享技術、知識和生活 *各種乾貨,記得關註哦! *vx:it_daimeng */ Servlet 1、ser ...
/* *作者:呆萌老師 *☑csdn認證講師 *☑51cto高級講師 *☑騰訊課堂認證講師 *☑網易雲課堂認證講師 *☑華為開發者學堂認證講師 *☑愛奇藝千人名師計劃成員 *在這裡給大家分享技術、知識和生活 *各種乾貨,記得關註哦! *vx:it_daimeng */
- Servlet
1、servlet與servlet容器
Java Servlet(Java伺服器小程式)是一個基於Java技術的Web組件,運行在伺服器端,它由Servlet容器所管理,用於生成動態的內容。 Servlet是平臺獨立的Java類,編寫一個Servlet,實際上就是按照Servlet規範編寫一個Java類。Servlet被編譯為平臺獨立 的位元組碼,可以被動態地載入到支持Java技術的Web伺服器中運行。
Servlet容器也叫做Servlet引擎。Servlet沒有main方法,不能獨立運行,它必須被部署到Servlet容器中,由容器來實例化和調用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期內包容和管理Servlet。在JSP技術 推出後,管理和運行Servlet/JSP的容器也稱為Web容器。
用戶通過單擊某個鏈接或者直接在瀏覽器的地址欄中輸入URL來訪問Servlet,Web伺服器接收到該請求後,並不是將 請求直接交給Servlet,而是交給Servlet容器。Servlet容器實例化Servlet,調用Servlet的一個特定方法對請求進行處理, 並產生一個響應。這個響應由Servlet容器返回給Web伺服器,Web伺服器包裝這個響應,以HTTP響應的形式發送給Web瀏覽器。
Tomcat伺服器接受客戶請求並做出響應的過程如下:
- 客戶端(通常都是瀏覽器)訪問Web伺服器,發送HTTP請求。
2)Web伺服器接收到請求後,傳遞給Servlet容器。
3)Servlet容器載入Servlet,產生Servlet實例後,向其傳遞表示請求和響應的對象。
4)Servlet實例使用請求對象得到客戶端的請求信息,然後進行相應的處理。
5)Servlet實例將處理結果通過響應對象發送回客戶端,容器負責確保響應正確送出,同時將控制返回給Web伺服器。
2、servlet生命周期
現在讓我們詳細討論生命周期的方法。
init() 方法
Servlet的init方法在一個生命周期中只被執行一次,調用service方法前,初始化必須完成;它在第一次創建 Servlet 時被調用,在後續每次用戶請求時不再調用。因此,它是用於一次性初始化,就像 Applet 的 init 方法一樣。
init 方法的定義如下:
public void init() throws ServletException { // 初始化代碼...}
service() 方法
service() 方法是執行實際任務的主要方法。Servlet 容器 調用 service() 方法來處理來自客戶端(瀏覽器)的請求,並把格式化的響應寫回給客戶端。
每次伺服器接收到一個 Servlet 請求時,伺服器會產生一個新的線程並調用服務。service() 方法檢查 HTTP 請求類型(GET、POST、PUT、DELETE 等),併在適當的時候調用 doGet、doPost、doPut,doDelete 等方法。
下麵是該方法的特征:
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException{}
所以,您不用對 service() 方法做任何動作,您只需要根據來自客戶端的請求類型來重寫 doGet() 或 doPost() 即可。
doGet() 和 doPost() 方法是每次服務請求中最常用的方法。下麵是這兩種方法的特征。
doGet() 方法
GET 請求來自於一個 URL 的正常請求,或者來自於一個未指定 METHOD 的 HTML 表單,它由 doGet() 方法處理。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet 代碼 }
doPost() 方法
POST 請求來自於一個特別指定了 METHOD 為 POST 的 HTML 表單,它由 doPost() 方法處理。
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Servlet 代碼 }
destroy() 方法
destroy() 方法只會被調用一次,在 Servlet 生命周期結束時被調用。destroy() 方法可以讓您的 Servlet 關閉資料庫連接、停止後臺線程、把 Cookie 列表或點擊計數器寫入到磁碟,並執行其他類似的清理活動。
在調用 destroy() 方法之後,servlet 對象被標記為垃圾回收。destroy 方法定義如下所示:
public void destroy() { // 終止化代碼... }
Servlet 生命周期可被定義為從創建直到毀滅的整個過程。以下是 Servlet 遵循的過程:
Servlet類載入
Servlet 通過調用 init () 方法進行初始化。
Servlet 調用 service() 方法來處理客戶端的請求,來選擇調用doGet還是doPost方法。
Servlet 通過調用 destroy() 方法終止(結束)。
最後,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。
架構圖
下圖顯示了一個典型的 Servlet 生命周期方案。
- 第一個到達伺服器的 HTTP 請求被委派到 Servlet 容器。
- Servlet 容器載入 Servlet,創建對象和初始化,然後調用 service() 。
- 然後 Servlet 容器處理由多個請求產生的多個線程,每個線程執行一個單一的 Servlet 實例的 service() 方法。
- JSP
JSP全名為Java Server Pages,中文名叫java
JSP技術有點類似ASP技術,它是在傳統的
它實現了Html語法中的java擴展(以 <%, %>形式)。JSP與Servlet一樣,是在伺服器端執行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。
Java Servlet是JSP的技術基礎,而且大型的Web應用程式的開發需要Java Servlet和JSP配合才能完成。JSP具備了