色翁荡息又大又硬又粗又视频软件,人人妻人人爽.,人人妻人人狠人人爽天天综合网,欧美精品亚洲精品日韩已满十八 ,欧美激情猛片xxxⅹ大3

forward和redirect的區(qū)別是什么 Forward和Redirect原理

大家都知道Forward和Redirect都是處理客戶端請(qǐng)求并負(fù)責(zé)轉(zhuǎn)發(fā)的,那么他們的原理與區(qū)別又是什么呢?

原理示意圖:

你知道Forward和Redirect的原理和區(qū)別嗎

如上圖所示為直接轉(zhuǎn)發(fā)(Forward)和間接轉(zhuǎn)發(fā)(Redirect)的工作原理示意圖。很明顯,當(dāng)用戶發(fā)出請(qǐng)求的時(shí)候,對(duì)于Forward(直接轉(zhuǎn)發(fā))是服務(wù)器直接請(qǐng)求資源,把內(nèi)容響應(yīng)給用戶,這個(gè)過程只有一次請(qǐng)求,即只有一個(gè)request對(duì)象。而對(duì)于Redirect(間接轉(zhuǎn)發(fā)),是服務(wù)器反饋給瀏覽器讓它重新再發(fā)起一次請(qǐng)求,這個(gè)過程中有兩次請(qǐng)求,即有兩個(gè)request對(duì)象。我們可以說Forward是一種服務(wù)器行為,而Redirect是一種客戶端行為。

那么他們有什么區(qū)別呢?

源代碼方法不同:Forward對(duì)應(yīng)的是RequestDispatcher類的forward()方法,而Redirect對(duì)應(yīng)的是HttpServletRequest類的sendRedirect()方法。

瀏覽器的地址欄顯示不同:當(dāng)用戶發(fā)起請(qǐng)求服務(wù)器響應(yīng)回來之后,F(xiàn)orward的地址欄的URL是不變的,而Redirect的地址欄會(huì)發(fā)生改變。

數(shù)據(jù)共享不同:對(duì)于Forward,轉(zhuǎn)發(fā)到的頁面是可以共享request里面的數(shù)據(jù),因?yàn)檎{(diào)用者和被調(diào)用者之間共享相同的request對(duì)象和response對(duì)象;而Redirect則不可以,因?yàn)檎{(diào)用者和被調(diào)用者屬于兩個(gè)獨(dú)立的請(qǐng)求-響應(yīng)過程。

內(nèi)部機(jī)制不同:Forward只能將請(qǐng)求轉(zhuǎn)發(fā)給同一個(gè)Web應(yīng)用中的組件,而Redirect可以重新定向到同一站點(diǎn)不同應(yīng)用程序中的資源,甚至可以定向到一絕對(duì)的URL。

處理效率不同:Forward的效率比Redirect高。

還有大家在書寫代碼的時(shí)候,要記住Redirect跳轉(zhuǎn)后必須加上return,不然頁面雖然跳轉(zhuǎn)了,但是還會(huì)執(zhí)行跳轉(zhuǎn)后面的語句,forward是執(zhí)行了跳轉(zhuǎn)頁面,下面的代碼是不會(huì)在執(zhí)行的。