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