關於httpServlet.service()步驟


關於httpServlet.service()步驟

關於()方法
  1、HTTP Servlet 使用一個 HTML 表格來發送和接收數據。要創建一個 HTTP Servlet,就需要擴展 HttpServlet 類,該類是用專門的方法來處理 HTML 表格的 GenericServlet 的一個子類。當表單信息被提交時,會指定服務器應執行哪一個Servlet(或其它的程序)。HttpServlet 類包含 init()、destroy()、service() 等方法,其中 init() 和 destroy() 方法是繼承的.
2、HTTP Servlet 的service() 方法

service() 方法是 Servlet 的核心。

每當一個客戶請求一個HttpServlet 對象,該對象的service() 方法就要被調用,而且傳遞給這個方法一個"請求"(ServletRequest)對象和一個"響應"(ServletResponse)對象作為參數。

在 HttpServlet 中已存在 service()方法.缺省的服務功能是調用與 HTTP 請求的方法相應的 do 功能。
例如,如果 HTTP 請求方法為 GET,則缺省情況下就調用 doGet()。

service方法是接口中的方法,servlet容器把所有請求發送到該方法,該方法默認行為是轉發http請求到doXXX方法中,如果你重載了該方法,默認操作被覆蓋,不再進行轉發操作!
service()是在javax.servlet.Servlet接口中定義的, 在 javax.servlet.GenericServlet中實現了這個接口, 而 doGet/doPost 則是在 javax.servlet.http.HttpServlet 中實現的, javax.servlet.http.HttpServlet 是javax.servlet.GenericServlet 的子類.

Servlet 應該為 Servlet 支持的 HTTP 方法覆蓋 do 功能.因為HttpServlet.service() 方法會檢查請求方法是否調用了適當的處理方法,不必要覆蓋 service() 方法。只需覆蓋相應的 do 方法就可以了。

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

我們也需要把Servlet做成既能處理GET請求,也能夠處理POST請求(eg:Servlet要處理GET和POST兩種請求)這只需要在doPost方法中調用doGet方法,或者覆蓋 service方法(service方法調用doGet、doPost、doHead等方法)在實際編程中這是一種標准的方法,因為它只需要很少的額外工作,卻能夠增加客戶端編碼的靈活性。
注意:一般會在service()中實現對父類方法的同參數表重載,即寫上super.service(req, resp);
     即使有了service()方法,也要把doGet()和doPost()方法標識出來!!
(我得要請教一下~~)


Servlet的響應可以是:
一個輸出流,瀏覽器根據它的內容類型(如text/HTML)進行解釋;
一個HTTP錯誤響應, 重定向到另一個URL,servlet,JSP


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM