java servlet 幾種頁(yè)面跳轉(zhuǎn)的方法
Servlet:
當(dāng)然,在servlet中,一般跳轉(zhuǎn)都發(fā)生在doGet, doPost等方法里面。
1) redirect 方式
response.sendRedirect("/a.jsp");
頁(yè)面的路徑是相對(duì)路徑。sendRedirect可以將頁(yè)面跳轉(zhuǎn)到任何頁(yè)面,不一定局限于本web應(yīng)用中,如:
response.sendRedirect("http://www.dbjr.com.cn");
跳轉(zhuǎn)后瀏覽器地址欄變化。
這種方式要傳值出去的話,只能在url中帶parameter或者放在session中,無法使用request.setAttribute來傳遞。
2) forward方式
RequestDispatcher dispatcher = request.getRequestDispatcher("/a.jsp");
dispatcher .forward(request, response);
頁(yè)面的路徑是相對(duì)路徑。forward方式只能跳轉(zhuǎn)到本web應(yīng)用中的頁(yè)面上。
跳轉(zhuǎn)后瀏覽器地址欄不會(huì)變化。
使用這種方式跳轉(zhuǎn),傳值可以使用三種方法:url中帶parameter,session,request.setAttribute
JSP:
1) response.sendRedirect();
和servlet的response.sendRedirect()方式一樣。
此語(yǔ)句前不允許有out.flush(),如果有,會(huì)有異常:
java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
跳轉(zhuǎn)后瀏覽器地址欄變化
如果要跳到不同主機(jī)下,跳轉(zhuǎn)后,此語(yǔ)句后面的語(yǔ)句會(huì)繼續(xù)執(zhí)行,如同新開了線程,但是對(duì)response的操作已經(jīng)無意義了;
如果要跳到相同主機(jī)下,此語(yǔ)句后面的語(yǔ)句執(zhí)行完成后才會(huì)跳轉(zhuǎn);
2) response.setHeader("Location","");
此語(yǔ)句前不允許有out.flush(),如果有,頁(yè)面不會(huì)跳轉(zhuǎn)。
跳轉(zhuǎn)后瀏覽器地址欄變化
此語(yǔ)句后面的語(yǔ)句執(zhí)行完成后才會(huì)跳轉(zhuǎn)
相關(guān)文章
解決springboot 無法配置多個(gè)靜態(tài)路徑的問題
這篇文章主要介紹了解決springboot 無法配置多個(gè)靜態(tài)路徑的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Springboot mybatis plus druid多數(shù)據(jù)源解決方案 dynamic-datasource的使用詳
這篇文章主要介紹了Springboot mybatis plus druid多數(shù)據(jù)源解決方案 dynamic-datasource的使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11解決Springboot-application.properties中文亂碼問題
這篇文章主要介紹了解決Springboot-application.properties中文亂碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Spring?WebMVC初始化Controller流程詳解
這篇文章主要介紹了Spring?WebMVC初始化Controller流程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02