1. 程式人生 > >JSP頁面的五種跳轉方法

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