標籤:而且 地址 轉寄 res 提交 generic 標準 活性 支援
轉載地址:http://java-admin.iteye.com/blog/194455
一個更為詳細的學習網址:http://www.runoob.com/servlet/servlet-intro.html
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等方法)。在實際編程中這是一種標準的方法,因為它只需要很少的額外工作,卻能夠增加用戶端編碼的靈活性。
Http Servlet詳解及學習地址