Posted on 2007-09-24 21:54
瘋狂 閱讀(3627)
評(píng)論(8) 編輯 收藏
他們的調(diào)用分別如下例:
request.getRequestDispatcher("new.jsp").forward(request, response);//轉(zhuǎn)發(fā)到new.jsp
response.sendRedirect("new.jsp");//重定向到new.jsp
在jsp頁(yè)面中你也會(huì)看到通過(guò)下面的方式實(shí)現(xiàn)轉(zhuǎn)發(fā):
<jsp:forward page="apage.jsp" />
重定向過(guò)程:客戶瀏覽器發(fā)送http請(qǐng)求----》web服務(wù)器接受后發(fā)送302響應(yīng)要求客戶瀏覽器發(fā)送一個(gè)新的http請(qǐng)求----》客戶端瀏覽器接受此響應(yīng)后在發(fā)送一個(gè)新的http請(qǐng)求到服務(wù)器----》服務(wù)器根據(jù)此請(qǐng)求尋找資源并發(fā)送給客戶,它可以重定向到任意URL,不能共享request范圍內(nèi)的數(shù)據(jù)。
轉(zhuǎn)發(fā)過(guò)程:客戶瀏覽器發(fā)送http請(qǐng)求----》web服務(wù)器接受此請(qǐng)求后調(diào)用內(nèi)部的一個(gè)方法在容器內(nèi)部完成請(qǐng)求處理和轉(zhuǎn)發(fā)動(dòng)作----》將目標(biāo)資源發(fā)送給客戶,它只能在同一個(gè)web應(yīng)用中使用,可以共享request范圍內(nèi)的數(shù)據(jù)。
怎么選擇是重定向還是轉(zhuǎn)發(fā)呢?通常情況下轉(zhuǎn)發(fā)更快,而且能保持request內(nèi)的對(duì)象,所以他是第一選擇。但是由于在轉(zhuǎn)發(fā)之后,瀏覽器中URL仍然指向開(kāi)始頁(yè)面,此時(shí)如果重載當(dāng)前頁(yè)面,開(kāi)始頁(yè)面將會(huì)被重新調(diào)用。如果你不想看到這樣的情況,則選擇轉(zhuǎn)發(fā)。
評(píng)論
# re: 轉(zhuǎn)發(fā)和重定向的區(qū)別的一點(diǎn)理解 回復(fù) 更多評(píng)論
2007-09-25 00:17 by
一個(gè)是客戶端跳轉(zhuǎn),一個(gè)是服務(wù)器端跳轉(zhuǎn)
# re: 轉(zhuǎn)發(fā)和重定向的區(qū)別的一點(diǎn)理解 回復(fù) 更多評(píng)論
2007-09-25 07:40 by
最后一句話,是不是..........
# re: 轉(zhuǎn)發(fā)和重定向的區(qū)別的一點(diǎn)理解 回復(fù) 更多評(píng)論
2007-09-25 08:43 by
怎么描述的有些矛盾呢?以前沒(méi)有仔細(xì)考慮過(guò),一會(huì)兒自己動(dòng)手試試吧
# re: 轉(zhuǎn)發(fā)和重定向的區(qū)別的一點(diǎn)理解 回復(fù) 更多評(píng)論
2007-09-25 09:01 by
OK了,正如forward的定義,跳轉(zhuǎn)時(shí)將攜同request對(duì)象,sendRedirect只是模擬console重發(fā)了一次請(qǐng)求。因此,前者不會(huì)引起B(yǎng)rowser Address 的變化,后者會(huì)。
# re: 轉(zhuǎn)發(fā)和重定向的區(qū)別的一點(diǎn)理解[未登錄](méi) 回復(fù) 更多評(píng)論
2007-09-25 09:09 by
寫(xiě)反了吧,紅色的字和藍(lán)色的字,應(yīng)該是
重定向過(guò)程:客戶瀏覽器發(fā)送http請(qǐng)求----》web服務(wù)器接受后發(fā)送302響應(yīng)要求客戶瀏覽器發(fā)送一個(gè)新的http請(qǐng)求----》客戶端瀏覽器接受此響應(yīng)后在發(fā)送一個(gè)新的http請(qǐng)求到服務(wù)器----》服務(wù)器根據(jù)此請(qǐng)求尋找資源并發(fā)送給客戶,它可以重定向到任意URL,不能共享request范圍內(nèi)的數(shù)據(jù)。
轉(zhuǎn)發(fā)過(guò)程:客戶瀏覽器發(fā)送http請(qǐng)求----》web服務(wù)器接受此請(qǐng)求后調(diào)用內(nèi)部的一個(gè)方法在容器內(nèi)部完成請(qǐng)求處理和轉(zhuǎn)發(fā)動(dòng)作----》將目標(biāo)資源發(fā)送給客戶,它只能在同一個(gè)web應(yīng)用中使用,可以共享request范圍內(nèi)的數(shù)據(jù)。
# re: 轉(zhuǎn)發(fā)和重定向的區(qū)別的一點(diǎn)理解 回復(fù) 更多評(píng)論
2007-09-25 09:40 by
好像bz弄反了哈哈
# re: 轉(zhuǎn)發(fā)和重定向的區(qū)別的一點(diǎn)理解 回復(fù) 更多評(píng)論
2007-09-25 18:14 by
各位眼力不錯(cuò),是有錯(cuò)誤,已改正,如給大家?guī)?lái)不便請(qǐng)見(jiàn)諒
# re: 轉(zhuǎn)發(fā)和重定向的區(qū)別的一點(diǎn)理解 回復(fù) 更多評(píng)論
2007-09-27 10:50 by
呵呵,知錯(cuò)能改不錯(cuò)