更新時(shí)間:2021-06-23 16:42:13 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽970次
servlet跳轉(zhuǎn)頁(yè)面的方法:
跳轉(zhuǎn)分為兩部分,一部分發(fā)生在servlet,另一部分發(fā)生在JSP,JSP就是servlet,但是兩者還是有部分差異。
(1)redirect方式
response.sendRedirect("/index.jsp");頁(yè)面的路徑是相對(duì)路徑。sendRedirect可以將頁(yè)面跳轉(zhuǎn)到任何頁(yè)面,不一定局限于web應(yīng)用中,如:response.sendRedirect(“http://www.baidu.com”);
跳轉(zhuǎn)后瀏覽器地址發(fā)生變化,只能在url總帶parameter或者放在session中,無(wú)法使用request.setAttribute來(lái)傳遞值。
(2)forward方式
request.getRequestDispatcher("/index.jsp").forward(request,response);頁(yè)面的路徑是對(duì)路徑。forward方式只能跳轉(zhuǎn)到本web應(yīng)用中的頁(yè)面上。跳轉(zhuǎn)后地址欄不會(huì)發(fā)生變化。使用這種方式跳轉(zhuǎn),傳值可以使用三種方法:url中帶parameter,session,request.setAttribute
(1)response.sendRedirect();
和servlet的response.sendRedirect()方式一樣,
跳轉(zhuǎn)后瀏覽器地址欄會(huì)變化,如果要跳轉(zhuǎn)到不同主機(jī)下,跳轉(zhuǎn)后,此語(yǔ)句后面的語(yǔ)句,如同新開(kāi)了線程,但是對(duì)response的操作已經(jīng)沒(méi)有意義了;如果要跳到相同主機(jī)下,此語(yǔ)句后面的語(yǔ)句執(zhí)行完成后才會(huì)跳轉(zhuǎn);
(2)response.setHeader(“Location”,"");
跳轉(zhuǎn)后瀏覽器地址欄發(fā)生變化,此語(yǔ)句后面的語(yǔ)句執(zhí)行完成后才能發(fā)生調(diào)轉(zhuǎn)
(3)jsp:forward page=""/
跳轉(zhuǎn)后瀏覽器地址欄不變,但是只能跳轉(zhuǎn)到當(dāng)前主機(jī)下,此語(yǔ)句后面的執(zhí)行語(yǔ)句執(zhí)行完成后才會(huì)跳轉(zhuǎn)。
重定向和請(qǐng)求轉(zhuǎn)發(fā)有一個(gè)重要的不同:
當(dāng)使用請(qǐng)求轉(zhuǎn)發(fā)時(shí),JSP容器將使用一個(gè)內(nèi)部的方法來(lái)調(diào)用目標(biāo)頁(yè)面,新的頁(yè)面繼續(xù)處理同一個(gè)請(qǐng)求,而瀏覽器將不會(huì)知道這個(gè)過(guò)程。與之相反,重定向方式的含義是第一個(gè)頁(yè)面通知瀏覽器發(fā)送一個(gè)新的頁(yè)面請(qǐng)求。因?yàn)?,?dāng)你使用重定向時(shí),瀏覽器中所顯示的URL會(huì)變成新頁(yè)面的URL,而當(dāng)使用轉(zhuǎn)發(fā)時(shí),該URL會(huì)保持不變。重定向的速度比轉(zhuǎn)發(fā)慢,因?yàn)闉g覽器還得發(fā)出一個(gè)新的請(qǐng)求。同時(shí),由于重定向方式產(chǎn)生了一個(gè)新的請(qǐng)求,所以經(jīng)過(guò)一次重定向后,request內(nèi)的對(duì)象將無(wú)法使用。
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Servlet跳轉(zhuǎn)頁(yè)面的方法解說(shuō)",希望對(duì)大家有幫助,想了解更多可查看Servlet教程技術(shù)文檔,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)