JSP頁面的五種跳轉方法
1. RequestDispatcher.forward()
是在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet or JSP到另外一個Servlet,JSP 或普通HTML檔案,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此時form提交的所有資訊在 b.jsp都可以獲得,引數自動傳遞. 但forward()無法重定向至有frame的jsp檔案,可以重定向至有frame的html檔案,同時forward()無法在後面帶引數傳遞,比如servlet?name=frank,這樣不行,可以程式內通過response.setAttribute("name",name)來傳至下一個頁面。
重定向後瀏覽器位址列URL不變。
例:在servlet中進行重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html; charset=gb2312");
ServletContext sc = getServletContext();
RequestDispatcher rd = null;
rd = sc.getRequestDispatcher("/index.jsp"); //定向的頁面
rd.forward(request, response);
}
通常在servlet中使用,不在jsp中使用。
2. response.sendRedirect()
是在使用者的瀏覽器端工作,sendRedirect()可以帶引數傳遞,比如servlet?name=frank傳至下個頁面,同時它可以重定向至不同的主機上,sendRedirect()可以重定向有frame.的jsp檔案.
重定向後在瀏覽器位址列上會出現重定向頁面的URL
例:在servlet中重定向
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType("text/html; charset=gb2312");
response.sendRedirect("/index.jsp");
}
由於response是jsp頁面中的隱含物件,故在jsp頁面中可以用response.sendRedirect()直接實現重定位。
注意:
(1) 使用response.sendRedirect時,前面不能有HTML輸出;
這並不是絕對的,不能有HTML輸出其實是指不能有HTML被送到了瀏覽器。事實上現在的server都有cache機制,一般在8K(我是說 JSP SERVER),這就意味著,除非你關閉了cache,或者你使用了out.flush()強制重新整理,那麼在使用sendRedirect之前,有少量的HTML輸出也是允許的。
(2) response.sendRedirect之後,應該緊跟一句return。
我們已經知道response.sendRedirect是通過瀏覽器來做轉向的,所以只有在頁面處理完成後,才會有實際的動作。既然你已經要做轉向了,那麼後的輸出還的意義呢?而且有可能會因為後面的輸出導致轉向失敗。
比較:
(1) Dispatcher.forward()是容器中控制權的轉向,在客戶端瀏覽器位址列中不會顯示出轉向後的地址;
(2) response.sendRedirect()則是完全的跳轉,瀏覽器將會得到跳轉的地址,並重新發送請求連結。這樣,從瀏覽器的位址列中可以看到跳轉後的連結地址。
前者更加高效,在前者可以滿足需要時,儘量使用RequestDispatcher.forward()方法。
注:在有些情況下,比如,需要跳轉到一個其它伺服器上的資源,則必須使用HttpServletResponse.sendRequest()方法。
3. <jsp:forward page="" />
它的底層部分是由RequestDispatcher來實現的,因此它帶有RequestDispatcher.forward()方法的印記。
如果在之前有很多輸出,前面的輸出已使緩衝區滿,將自動輸出到客戶端,那麼該語句將不起作用,這一點應該特別注意。
另外要注意:它不能改變瀏覽器地址,重新整理的話會導致重複提交
4. 修改HTTP header的Location屬性來重定向
通過設定直接修改位址列來實現頁面的重定向。
jsp檔案程式碼如下:
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
response.setHeader("Location",newLocn);
%>
5. JSP中實現在某頁面停留若干秒後,自動重定向到另一頁面
在html檔案中,下面的程式碼:
<meta http-equiv="refresh" content="300; url=target.jsp">
它的含義:在5分鐘之後正在瀏覽的頁面將會自動變為target.html這一頁。程式碼中300為重新整理的延遲時間,以秒為單位。targer.html為你想轉向的目標頁,若為本頁則為自動重新整理本頁。
由上可知,可以通過setHeader來實現某頁面停留若干秒後,自動重定向到另一頁面。
關鍵程式碼:
String content=stayTime+";URL="+URL;
response.setHeader("REFRESH",content);
相關推薦
JSP頁面的五種跳轉方法
1. RequestDispatcher.forward() 是在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet or JSP到另外一個Servlet,JSP 或普通HTML檔案,也即你的form提交至
微信小程式的五種跳轉方式
//只能跳轉到tabBar配置頁面 wx.switchTab({ url: '/pages/index/index', }); //返回上一級頁面(delta:返回的頁面數,如果 delta 大於現有頁面數,則返回到首頁,預設值為1) wx.navigateBack({
thinkphp的幾種跳轉方法
1、$this->redirect('跳轉連結', array(), 停留時間, '訊息'); 2、成功跳轉 $this->success('訊息', '跳轉連結', 停留時間); 3
jsp中跳轉 jsp的兩種跳轉方式及區別
//注意:不推薦中文檔名如"目的頁面.jsp",此處僅為了教程需要而使用 // 帶session,不帶request的跳轉(客戶端跳轉) responst.sendRedirect("目的頁面.jsp"); // 帶session,帶request的跳轉(
jsp的兩種跳轉方式和區別
1.forward跳轉: 伺服器端跳轉,位址列不改變; 執行到跳轉語句後馬上無條件跳轉,之後的程式碼不再執行(跳轉之前一定要釋放全部資源); request設定的屬性在跳轉後的頁面仍可以使用;
jsp的三種跳轉語句
1:getServletContext().getRequestDispatcher("/one.jsp").include(request, response); 2:response.sendRedirect("/demo/one.jsp"); 3:out.println
PHP頁面3中跳轉方法
方法一:使用PHP自帶函式 Header("Location: 網址 "); 說明:必須在網頁沒有任何輸出的時候執行,要特別要注意空格。去空格的方法參照如下第4問 即,這句話要放在網頁開始的時候,放在body裡或後面都會出錯, 方法二:利用meta ec
總結一些頁面常見的跳轉方法
1、通用的頁面跳轉方法 ,一般以根目錄為起始目錄window.location.href = urls;//urls為跳轉的路徑 2、寫在html中的頁面跳轉方法,一般以當前目錄為起始目錄:對應的頁面部分:<iframe id="iframeID" style="di
JSP的三種跳轉方式
1. response.sendRedirect(); 此語句前不允許有out.flush(),如果有,會有異常,跳轉後瀏覽器位址列變化 2. response.setHeader("Location",""); 此語句前不允許有out.flush(),如果有,頁面不會
JSP頁面超連結跳轉到Servlet後中文亂碼解決
因為涉及到專案的一個功能,我們使用到了超連結a標籤作為分頁符,進行模糊查詢功能,在使用過程中,使用form表單post提交中文資料進入servle介面,第一次使用中文查詢沒有問題,但是在按動分頁符時,發現無法將中文資料再次傳入後臺,所以簡單使用在位址列尾部增加值的方式,然
五種JSP頁面跳轉方法詳解
1. RequestDispatcher.forward() 是在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet or JSP到另外一個Servlet,JSP 或普通HTML檔案,也即你的form提交至a.
iOS三種頁面跳轉方法
// 第一種通過給頁面設定tag值 // 把tag值為3000的view帶到最前面 也就是顯示在螢幕上; [self.window bringSubviewToFront:[self.window viewWithTag:3000]]; // 把tag值為2000的view
三種簡單的html網頁自動跳轉方法,可以讓你在開啟一個html網頁時自動跳轉到其它的頁面
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>正在跳轉</title> </head> &
四種跳轉頁面的方法
window.location.href="http://www.baidu.com"; $(location).attr('href', 'http://www.baidu.com'); $(window).attr('location','http://www.baid
讓jsp頁面自動跳轉方法
在做ilearing自動系統登入時,需要對傳入引數做處理,所以中間需要加一箇中間頁面,處理完後讓自動跳轉到系統首頁 1.用window.location.href,讓頁面載入時自動執行js<scr
微信小程序頁面跳轉方法總結
ring 補充 app 程序 space color 使用 attr 微信 微信小程序頁面跳轉目前有以下方法(不全面的歡迎補充): 1. 利用小程序提供的 API 跳轉: // 保留當前頁面,跳轉到應用內的某個頁面,使用wx.navigateBack可以返回到原頁面。/
微信小程序頁面跳轉方法和攜帶參數詳解
nload 使用 名稱 屬性 這一 模板語言 UNC 方法 rec 1.頁面跳轉方式 (1)標簽跳轉 open-type的屬性值對應api裏的用法即wx.的用法 1 <navigator url="/page/navigate/navigate?t
jsp錯誤頁不跳轉顯示500錯誤解決方法
問題描述:使用頁面跳轉的方式來提示頁面錯誤資訊,但是程式執行失敗,並沒有跳轉到錯誤頁。 兩段程式碼如下: 第一段(error.jsp): <!-- 當本檔案出現錯誤時跳轉到錯誤頁 --><%@ page language="java" contentType="text/
多個頁面跳轉到一個頁面,每次跳轉顯示不一樣的內容,相同功能形式不同的jsp頁面整合成一個 根據傳遞的引數值來決定跳轉的jsp頁面該顯示什麼樣的內容,避免new多個jsp頁面,節省資源
在jsp開發過程中,會遇到這樣的情況; 一個頁面跳轉到另一個頁面,需要兩個jsp頁面; 如果有5、6種不同的一個頁面跳轉到另一個不同的jsp頁面的時候,基本的功能都差不多,類似的情況,如果建立很多的jsp,會導致資源浪費,還有就是建立多個jsp頁面到後來自己都有點暈; 那麼只需要在傳遞的
小程式頁面跳轉方法
需求:從 index.wxml 頁面,跳轉到 log.wxml 頁面 方法一:WXML頁面實現 <navigator url = "/pages/log/log">跳轉到新頁面</navigator> <navigator url = "/pages/log