JavaWeb第二讲 重定向与转发 doGet()与doPost()
(一)重定向與轉發
轉發**(服務器行為)**
request.getRequestDispatcher("url").forward(request, response);重定向**(客戶端行為)**
response.sendRedirect("url");1.地址欄區別
Forward是服務器請求資源,服務器直接訪問目標地址的url,把那個url的響應內容讀取過來,然后把這些內容再發給瀏覽器。瀏覽器根本不知道服務器發送的內容從哪里來的,所以地址欄不變。
Redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址,所以地址欄顯示的是新的URL。Redirect利用服務器返回的狀態碼實現。客戶端瀏覽器請求服務器時,服務器會返回一個狀態碼。服務器通過setStatus(int status)方法設置狀態碼。如果服務器返回301或者302,則瀏覽器會到新的網址重新請求該資源。
2.數據共享區別
Forward:轉發頁面和轉發到的頁面可以共享request里面的數據。
Redirect:不能共享數據。
3.應用區別
Forward:一般用于用戶登陸的時候,根據角色轉發到相應的模塊.
Redirect:一般用于用戶注銷登陸時返回主頁面和跳轉到其它的網站等
4.從效率來說
Forward:高。
Redirect:低。因為瀏覽器至少提交了兩次請求。
(二)doGet()與doPost()
1.get是用來從服務器上獲取數據,而post是用來向服務器傳遞數據;
2.get將表單中數據按照variable=value的形式,添加到action所指向的URL后面,并且兩者用" ? “連接,變量之間用” & "連接;而post是將表單中的數據放在form的數據體中,按照變量與值對應的方式,傳遞到action屬性所指定的URL。
3.get是不安全的,因為在傳輸過程中,數據是被放在請求的URL中,對用戶可見;而post的所有操作對用戶來說都是不可見的。
4.get傳輸的數據量小,這主要應為受url長度限制,通常在1024字節左右;而post可以傳輸大量的數據,所有上傳文件只能用post提交。
5.get限制form表單的數據集必須為ASCII字符;而post支持整個IS01-0646字符集。
6.get是form表單的默認方法。
總結
以上是生活随笔為你收集整理的JavaWeb第二讲 重定向与转发 doGet()与doPost()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaWeb第一讲 Servlet的工
- 下一篇: JavaWeb第四讲 会话跟踪技术Htt