(1) init() 方法
在 Servlet 的生命期中,僅執行一次 init() 方法。它是在伺服器裝入 Servlet 時執行的。 可以配置伺服器,以在啟動伺服器或客戶機首次訪問 Servlet 時裝入 Servlet。 無論有多少客戶機訪問 Servlet,都不會重複執行 init() 。
預設的 init() 方法通常是符合要求的,但也可以用定製 init() 方法來覆蓋它,典型的是管理伺服器端資源。 例如,可能編寫一個定製 init() 來只用於一次裝入 GIF 影象,改進 Servlet 返回 GIF 影象和含有多個客戶機請求的效能。另一個示例是初始化資料庫連線。預設的 init() 方法設定了 Servlet 的初始化引數,並用它的 ServletConfig 物件引數來啟動配置, 因此所有覆蓋 init() 方法的 Servlet 應呼叫 super.init() 以確保仍然執行這些任務。在呼叫 service() 方法之前,應確保已完成了 init() 方法。
(2) service() 方法
service() 方法是 Servlet 的核心。每當一個客戶請求一個HttpServlet 物件,該物件的service() 方法就要被呼叫,而且傳遞給這個方法一個"請求"(ServletRequest)物件和一個"響應"(ServletResponse)物件作為引數。 在 HttpServlet 中已存在 service() 方法。預設的服務功能是呼叫與 HTTP 請求的方法相應的 do 功能。例如, 如果 HTTP 請求方法為 GET,則預設情況下就呼叫 doGet() 。Servlet 應該為 Servlet 支援的 HTTP 方法覆蓋 do 功能。因為 HttpServlet.service() 方法會檢查請求方法是否呼叫了適當的處理方法,不必要覆蓋 service() 方法。只需覆蓋相應的 do 方法就可以了。
當一個客戶透過HTML 表單發出一個HTTP POST請求時,doPost()方法被呼叫。與POST請求相關的引數作為一個單獨的HTTP 請求從瀏覽器傳送到伺服器。當需要修改伺服器端的資料時,應該使用doPost()方法。
當一個客戶透過HTML 表單發出一個HTTP GET請求或直接請求一個URL時,doGet()方法被呼叫。與GET請求相關的引數新增到URL的後面,並與這個請求一起傳送。當不會修改伺服器端的資料時,應該使用doGet()方法。
(1) init() 方法
在 Servlet 的生命期中,僅執行一次 init() 方法。它是在伺服器裝入 Servlet 時執行的。 可以配置伺服器,以在啟動伺服器或客戶機首次訪問 Servlet 時裝入 Servlet。 無論有多少客戶機訪問 Servlet,都不會重複執行 init() 。
預設的 init() 方法通常是符合要求的,但也可以用定製 init() 方法來覆蓋它,典型的是管理伺服器端資源。 例如,可能編寫一個定製 init() 來只用於一次裝入 GIF 影象,改進 Servlet 返回 GIF 影象和含有多個客戶機請求的效能。另一個示例是初始化資料庫連線。預設的 init() 方法設定了 Servlet 的初始化引數,並用它的 ServletConfig 物件引數來啟動配置, 因此所有覆蓋 init() 方法的 Servlet 應呼叫 super.init() 以確保仍然執行這些任務。在呼叫 service() 方法之前,應確保已完成了 init() 方法。
(2) service() 方法
service() 方法是 Servlet 的核心。每當一個客戶請求一個HttpServlet 物件,該物件的service() 方法就要被呼叫,而且傳遞給這個方法一個"請求"(ServletRequest)物件和一個"響應"(ServletResponse)物件作為引數。 在 HttpServlet 中已存在 service() 方法。預設的服務功能是呼叫與 HTTP 請求的方法相應的 do 功能。例如, 如果 HTTP 請求方法為 GET,則預設情況下就呼叫 doGet() 。Servlet 應該為 Servlet 支援的 HTTP 方法覆蓋 do 功能。因為 HttpServlet.service() 方法會檢查請求方法是否呼叫了適當的處理方法,不必要覆蓋 service() 方法。只需覆蓋相應的 do 方法就可以了。
當一個客戶透過HTML 表單發出一個HTTP POST請求時,doPost()方法被呼叫。與POST請求相關的引數作為一個單獨的HTTP 請求從瀏覽器傳送到伺服器。當需要修改伺服器端的資料時,應該使用doPost()方法。
當一個客戶透過HTML 表單發出一個HTTP GET請求或直接請求一個URL時,doGet()方法被呼叫。與GET請求相關的引數新增到URL的後面,並與這個請求一起傳送。當不會修改伺服器端的資料時,應該使用doGet()方法。