Java Web 第四天 使用Servlet處理請求

一、 GET POST 的區別

1.GET 提交的是文本內容,規定其數據長度不超過 255 個字符。在 GET 方式提交的 URL 中會顯示出提交的查詢數據而卻提交數據的緩存會在瀏覽器的 URL 歷史狀態中,這樣我們往往在瀏覽網頁的時候點擊後退鍵不需要重新發送請求。

2.POST 提交的可以使文本內容,也可以使二進制內容,所以我們上傳文件的時候用的就是 POST 得方式。 POST 對於提交數據長度沒有限制,我們發送的數據也不會在 URL 中出現,所以這種方式較爲安全。但是網頁提交的數據緩存不會在瀏覽器中存在,所以我們點擊後退到此類的網頁的時候一般會出現數據過期等提示。

3 .提交數據的時候一般只有表單才用 POST 的形式,其他的都是 GET 的方式。

二、 HTTP 請求方法與 HttpServlet 方法的對應關係

       1. 容器調用 service ServletRequest ,ServletResponse )方法;

       2. service ServletRequest ,ServletResponse )方法再調用同一個 Servlet 類中的 service HttpServletRequest ,HttpServletResponse )方法;

       3. service HttpServletRequest ,HttpServletResponse )將分析 HTTP 請求,找到請求方法類型然後調用相應的處理方法。

       4. 如果在自定義的 Servlet 類中覆蓋 service 方法, do ×××方法將不會自動調用。

三、 HTTP 請求行的獲取

getMothod() :獲得請求提交方式

getRequestURI ():獲取提交的 URI

getServletPath() :獲取 Servlet 映射路徑。

四、 HTTP 請求頭的獲得

       Enumeration eu = request.getHeaderName();

       while(eu.hasMoreElements()){

       String name = (String)en.nextElements();

       String values = (String)en.getHeader(name);

}

五、 HTTP 消息體的獲取

利用 getParameter(String name) 可獲得提交表單的內容,但該方法只適用於文本文件的獲得,不能獲取二進制的數據。

六、文件上傳

       1. 設置表單提交數據方式爲 POST ,並設置以二進制提交。

              Enctype=”multipart/form-data”

       2.request.getInputStream() 獲得 Request 輸入流

       3. 解析輸入流並創建文件

七、請求轉發

利用請求轉發可以讓每個客戶的請求傳遞給很多 Servlet 以及 web 應用程序中的其他資源。重定向和請求轉發的最大區別在於,重定向是在客戶端完成,需要 2 次請求,而轉發只是在服務端完成,只需要 1 次請求。

我們可以利用 getRequestDispatcher() 方法獲得 RequestDispatcher 對象 ,然後利用 forward ()或者 include ()方法實現轉發。前者意味着把請求和響應派發給別的資源後就不會再去做任何處理,而後者在派發後並不是完全移交,只是暫時把控制權交給別人。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章