jsp的轉(zhuǎn)發(fā)和重定向的區(qū)別 JSP如何實(shí)現(xiàn)網(wǎng)頁(yè)重定向?
JSP如何實(shí)現(xiàn)網(wǎng)頁(yè)重定向?JSP實(shí)現(xiàn)頁(yè)面重定向,使用響應(yīng).sendRedirect(“a.jsp”)將頁(yè)面重定向到a.jsp。有兩種方法來(lái)寫它:1。如果您在JSP頁(yè)面中編寫代碼,您可以響應(yīng).sendR
JSP如何實(shí)現(xiàn)網(wǎng)頁(yè)重定向?
JSP實(shí)現(xiàn)頁(yè)面重定向,使用響應(yīng).sendRedirect(“a.jsp”)將頁(yè)面重定向到a.jsp。有兩種方法來(lái)寫它:1。如果您在JSP頁(yè)面中編寫代碼,您可以響應(yīng).sendRedirect(“a.jsp”)在<%%>中,即:<%響應(yīng).sendRedirect(“a.jsp”)%>
2。如果您正在java文件(比如servlet)中編寫代碼,只需編寫響應(yīng).sendRedirect(“a.jsp”)就可以了。接下來(lái),讓我們討論forward和send redirect之間的區(qū)別:redirection:存儲(chǔ)在前一個(gè)請(qǐng)求中的所有變量都無(wú)效,并進(jìn)入一個(gè)新的請(qǐng)求范圍。轉(zhuǎn)發(fā):前一個(gè)請(qǐng)求中存儲(chǔ)的變量不會(huì)無(wú)效,就像將兩個(gè)頁(yè)面放在一起一樣。
“請(qǐng)求轉(zhuǎn)發(fā)”和“重定向”之間的區(qū)別?
區(qū)別如下:1。不同的請(qǐng)求次數(shù),重定向總共向服務(wù)器請(qǐng)求兩次;轉(zhuǎn)發(fā)是一個(gè)過(guò)程,用戶的請(qǐng)求可以一次通過(guò)n個(gè)JSP頁(yè)面返回到用戶的瀏覽器,這是一個(gè)對(duì)一個(gè)請(qǐng)求進(jìn)行多次處理的過(guò)程;
2。在跳轉(zhuǎn)過(guò)程中鏈接發(fā)生變化,在跳轉(zhuǎn)過(guò)程中重定向請(qǐng)求服務(wù)器兩次,在轉(zhuǎn)發(fā)過(guò)程中是瀏覽器中兩個(gè)不同鏈接地址的過(guò)程,瀏覽器請(qǐng)求服務(wù)器一次,服務(wù)器通過(guò)n個(gè)JSP頁(yè)面后不改變請(qǐng)求的鏈接地址。因?yàn)橛脩糁徽?qǐng)求一次,鏈接地址在整個(gè)跳轉(zhuǎn)過(guò)程中不會(huì)改變,你可以在瀏覽器的地址欄中看到它
3。不同的目的,重定向只是讓用戶訪問(wèn)一個(gè)新鏈接的唯一方式,轉(zhuǎn)發(fā)是服務(wù)器獲取用戶的請(qǐng)求內(nèi)容并需要處理其中的一部分,所以這兩個(gè)目的是不同的
重定向和轉(zhuǎn)發(fā)有一個(gè)重要的區(qū)別:當(dāng)使用轉(zhuǎn)發(fā)時(shí),JSP容器將使用一個(gè)內(nèi)部方法調(diào)用目標(biāo)頁(yè)面,新頁(yè)面將繼續(xù)處理相同的請(qǐng)求,而瀏覽處理器將不知道該過(guò)程。相反,重定向意味著第一個(gè)頁(yè)面通知瀏覽器發(fā)送一個(gè)新的頁(yè)面請(qǐng)求。因?yàn)?,使用重定向時(shí),瀏覽器中顯示的URL將成為新頁(yè)面的URL,而使用轉(zhuǎn)發(fā)時(shí),URL將保持不變。重定向比轉(zhuǎn)發(fā)慢,因?yàn)闉g覽器必須發(fā)出新請(qǐng)求。同時(shí),由于重定向方法生成一個(gè)新的請(qǐng)求,因此重置后不能使用請(qǐng)求中的對(duì)象。
如何選擇重定向或轉(zhuǎn)發(fā)?一般來(lái)說(shuō),轉(zhuǎn)發(fā)速度比較快,可以將對(duì)象保留在請(qǐng)求中,因此是首選。但是,轉(zhuǎn)發(fā)后,瀏覽器中的URL仍然指向起始頁(yè)。如果當(dāng)前頁(yè)面過(guò)載,將再次調(diào)用起始頁(yè)。如果你不想看到這個(gè),選擇前進(jìn)。
轉(zhuǎn)發(fā)和重定向之間的區(qū)別
不要只使用會(huì)話作用域?qū)⒆兞總鬟f到下一頁(yè)。它會(huì)無(wú)緣無(wú)故地增加變量的范圍。轉(zhuǎn)發(fā)可以幫助您解決此問(wèn)題。
重定向:上一個(gè)請(qǐng)求中存儲(chǔ)的所有變量都無(wú)效,請(qǐng)輸入新的請(qǐng)求范圍。
轉(zhuǎn)發(fā):前一個(gè)請(qǐng)求中存儲(chǔ)的變量不會(huì)無(wú)效,就像將兩個(gè)頁(yè)面放在一起一樣。
重定向和轉(zhuǎn)發(fā)有什么區(qū)別?
轉(zhuǎn)發(fā)是請(qǐng)求轉(zhuǎn)發(fā),響應(yīng)是重定向,請(qǐng)求轉(zhuǎn)發(fā)是將請(qǐng)求轉(zhuǎn)發(fā)給另一個(gè)servlet進(jìn)行處理,整個(gè)流程只有一個(gè)請(qǐng)求和一個(gè)響應(yīng),重定向是通知瀏覽器請(qǐng)求另一個(gè)資源,整個(gè)流程有兩個(gè)請(qǐng)求和兩個(gè)響應(yīng),地址欄會(huì)改變
轉(zhuǎn)發(fā)和重定向的區(qū)別
重定向響應(yīng).sendRedirect(”成功訪問(wèn).jsp“”
轉(zhuǎn)發(fā):請(qǐng)求.getRequestDispatcher(" 成功.jsp"). 轉(zhuǎn)發(fā)(請(qǐng)求,響應(yīng))
1。轉(zhuǎn)發(fā)在服務(wù)器端完成,重定向在客戶端完成
★2。轉(zhuǎn)發(fā)速度快;重定向速度慢
3。轉(zhuǎn)發(fā)是同一個(gè)請(qǐng)求;重定向是兩個(gè)不同的請(qǐng)求
★4。轉(zhuǎn)發(fā)后不會(huì)執(zhí)行代碼轉(zhuǎn)發(fā);重定向會(huì)執(zhí)行重定向轉(zhuǎn)發(fā)必須在同一臺(tái)服務(wù)器上完成;重定向可以在不同的服務(wù)器上完成