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