程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> servlet入門:servlet介紹及生命周期

servlet入門:servlet介紹及生命周期

編輯:關於JSP
內容提要:什麼是servlet?
Servlet 是實現特殊接口的 java 類,是運行在服務器端的Java應用程序,具有獨立於平台和協議的特性。
servlet的工作模式
  客戶端發送請求至服務器 
  服務器啟動並調用Servlet,Servlet根據客戶端請求生成響應內容並將其傳給服務器 
 

什麼是servlet?

Servlet 是實現特殊接口的 java 類,是運行在服務器端的Java應用程序,具有獨立於平台和協議的特性。

servlet的工作模式

  客戶端發送請求至服務器

 

  服務器啟動並調用Servlet,Servlet根據客戶端請求生成響應內容並將其傳給服務器

 

  服務器將響應返回客戶端

servlet的工作模式

可見servlet擔當客戶請求(Web浏覽器或其他HTTP客戶程序)與服務器響應(HTTP服務器上的數據庫或應用程序)的中間層。

servlet生命周期:

servlet的生命周期由部署servlet的容器來控制,當一個請求映射到一個servlet時,該容器執行下列步驟。

(1) init() 方法

 

 它是在服務器裝入 Servlet 時執行的。   在 Servlet 的生命期中,僅執行一次 init() 方法。無論有多少客戶機訪問 Servlet,都不會重復執行 init() 。

 

  可以覆蓋init() 方法,典型應用:初始化數據庫連接。

    缺省的 init() 方法設置了 Servlet 的初始化參數,並用它的 ServletConfig 對象參數來啟動配置, 因此所有覆蓋 init() 方法的 Servlet 應調用 super.init() 以確保仍然執行這些任務。

 


  (2) service() 方法

 

  service() 方法是 Servlet 的核心。每當一個客戶請求一個HttpServlet 對象,該對象的service() 方法就要被調用,而且傳遞給這個方法一個"請求"(ServletRequest)對象和一個"響應"(ServletResponse)對象作為參數。 在 HttpServlet 中已存在 service() 方法。缺省的服務功能是調用與 HTTP 請求的方法相應的 do 功能。例如, 如果 HTTP 請求方法為 GET,則缺省情況下就調用 doGet() 。Servlet 應該為 Servlet 支持的 HTTP 方法覆蓋 do 功能。因為 HttpServlet.service() 方法會檢查請求方法是否調用了適當的處理方法,不必要覆蓋 service() 方法。只需覆蓋相應的 do 方法就可以了。

 

  (3)doGet()方法

 

 

  當一個客戶通過HTML 表單發出一個HTTP GET請求或直接請求一個URL時,doGet()方法被調用。與GET請求相關的參數添加到URL的後面,並與這個請求一起發送。當不會修改服務器端的數據時,應該使用doGet()方法。

 

  (4)doPost()方法

 

  當一個客戶通過HTML 表單發出一個HTTP POST請求時,doPost()方法被調用。與POST請求相關的參數作為一個單獨的HTTP 請求從浏覽器發送到服務器。當需要修改服務器端的數據時,應該使用doPost()方法。

   doGet(),doPost()和service()的聯系:

   doGet()的調用順序:1.service() 2.super.service 3.doGet (doPost類似)。可見service方法是核心。

   doGet(),doPost() 常見異常:HTTP Status 405-HTTP method POST is not supported by this URL

   解決方法:增加doPost() 方法即可。

 

  (5) destroy() 方法

 

  destroy() 方法僅執行一次,即在服務器停止且卸裝Servlet 時執行該方法。典型應用:管理服務器端資源。例如,如果 Servlet 在運行時會累計統計數據,則可以編寫一個 destroy() 方法,該方法用於在未裝入 Servlet 時將統計數字保存在文件中。另一個示例是關閉數據庫連接。

 

  當服務器卸裝 Servlet 時,將在所有 service() 方法調用完成後,或在指定的時間間隔過後調用 destroy() 方法。

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved