Servlet處理HTTP請求
阿新 • • 發佈:2019-02-05
使用Servlet接受伺服器端請求資訊
HTTP請求包括請求行、請求頭、訊息體以及分割請求頭和訊息體的一個空行。
客戶端的HTTP請求通過HttpServletRequest物件代表。HttpServletRequest物件只要用於獲取由客戶端傳送過來的請求頭、
引數、檔案、資料等。Servlet規範中對此物件進行了增強,使其還可以與Web應用程式互動。例如,會話管理、Servlet之
間的請求轉發等。Servlet存在的真正任務就是處理請求。
GET/POST提交方法
當下列任何一條事件發生的時候。瀏覽器都會向Web伺服器傳送HTTP請求:
使用者在網頁上點選一個超連結;
使用者提交網頁填寫好的表單;
使用者在瀏覽器位址列輸入URL地址並回車;
預設情況下,上述事件都是使用HTTP協議的GET方法提交請求。然而,我們也可以使用不同的HTTP請求方法來定製瀏覽器行為。
如果在HTML中沒有具體指定"method"屬性,瀏覽器將預設使用GET方法。如果使用POST請求,必須在表單中指定"method='post'"。
特徵:GETPOST
提交資料型別 文字文字,二進位制流
提交資料長度 不超過255個字元沒有限制
提交資料可見性 作為URL地址的一部分顯示在瀏覽器位址列作為請求的訊息體,不可見
提交資料快取 快取在瀏覽器URL歷史狀態中不會被瀏覽快取
通過上述,我們可以概括出在什麼時候用GET/POST方法:
請求一個靜態頁面或圖形檔案時使用GET方法,因為僅僅需要傳送檔名;
傳送大資料的時候,使用POST方法;
傳送使用者名稱,密碼或其它保密資訊的時候使用POST方法
HTTP請求方法與HttpServlet方法對應關係:
HTTP請求方法型別 HttpServlet處理方法
GET doGet()
HEAD doHead()
POST doPost()
PUT doPut()
DELETE doDelete()
OPTIONS doOptions()
TRACE doTrace()
HttpServlet提供了這些方法的實現,在我們編寫的Servlet中只需要覆蓋這些方法就可以了。根據Servlet生命週期,
這些方法的呼叫過程如下:
1)容器呼叫service(ServletRequest,ServletResponse)方法;
2)service(ServletRequest,ServletResponse)方法在呼叫用一個類中的service(HttpServletRequest,
HttpServletResponse);
3)service(ServletRequest,ServletResponse)方法將分析HTTP請求,找到請求方法型別然後呼叫相應的處理方法。
如果在自定義的Servlet類中覆蓋service方法。doXXX方法將不會自動呼叫。在絕大多數的情況下,我們只需要關心
GET/POST方法方法就行了。
HTTP請求包括請求行、請求頭、訊息體以及分割請求頭和訊息體的一個空行。
客戶端的HTTP請求通過HttpServletRequest物件代表。HttpServletRequest物件只要用於獲取由客戶端傳送過來的請求頭、
引數、檔案、資料等。Servlet規範中對此物件進行了增強,使其還可以與Web應用程式互動。例如,會話管理、Servlet之
間的請求轉發等。Servlet存在的真正任務就是處理請求。
GET/POST提交方法
當下列任何一條事件發生的時候。瀏覽器都會向Web伺服器傳送HTTP請求:
使用者在網頁上點選一個超連結;
使用者提交網頁填寫好的表單;
使用者在瀏覽器位址列輸入URL地址並回車;
預設情況下,上述事件都是使用HTTP協議的GET方法提交請求。然而,我們也可以使用不同的HTTP請求方法來定製瀏覽器行為。
如果在HTML中沒有具體指定"method"屬性,瀏覽器將預設使用GET方法。如果使用POST請求,必須在表單中指定"method='post'"。
特徵:GETPOST
提交資料型別 文字文字,二進位制流
提交資料長度 不超過255個字元沒有限制
提交資料可見性 作為URL地址的一部分顯示在瀏覽器位址列作為請求的訊息體,不可見
提交資料快取 快取在瀏覽器URL歷史狀態中不會被瀏覽快取
通過上述,我們可以概括出在什麼時候用GET/POST方法:
請求一個靜態頁面或圖形檔案時使用GET方法,因為僅僅需要傳送檔名;
傳送大資料的時候,使用POST方法;
傳送使用者名稱,密碼或其它保密資訊的時候使用POST方法
HTTP請求方法與HttpServlet方法對應關係:
HTTP請求方法型別 HttpServlet處理方法
GET doGet()
HEAD doHead()
POST doPost()
PUT doPut()
DELETE doDelete()
OPTIONS doOptions()
TRACE doTrace()
HttpServlet提供了這些方法的實現,在我們編寫的Servlet中只需要覆蓋這些方法就可以了。根據Servlet生命週期,
這些方法的呼叫過程如下:
1)容器呼叫service(ServletRequest,ServletResponse)方法;
2)service(ServletRequest,ServletResponse)方法在呼叫用一個類中的service(HttpServletRequest,
HttpServletResponse);
3)service(ServletRequest,ServletResponse)方法將分析HTTP請求,找到請求方法型別然後呼叫相應的處理方法。
如果在自定義的Servlet類中覆蓋service方法。doXXX方法將不會自動呼叫。在絕大多數的情況下,我們只需要關心
GET/POST方法方法就行了。