1. 程式人生 > >js和jsp所有頁面跳轉總結

js和jsp所有頁面跳轉總結

Jsp 頁面跳轉的幾種方法

1. RequestDispatcher.forward()

在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是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);

}

      或

      request.getRequestDispatcher(" /index.jsp ").forward(request, response);//轉發到index .jsp       getServletConfig().getServletContext().getRequestDispatcher("

/index.jsp ").forward(request, response);

      //轉發到 index .jsp

通常在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);

Js 頁面跳轉(父頁面,外層頁面,本頁面)

"window.location.href"、"location.href"是本頁面跳轉

"parent.location.href"是上一層頁面跳轉

"top.location.href"是最外層的頁面跳轉

舉例說明:

如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js這樣寫

"window.location.href"、"location.href":D頁面跳轉

"parent.location.href":C頁面跳轉

"top.location.href":A頁面跳轉

如果D頁面中有form的話,

: form提交後D頁面跳轉

: form提交後彈出新頁面

: form提交後C頁面跳轉

: form提交後A頁面跳轉

關於頁面重新整理,D 頁面中這樣寫:

"parent.location.reload();": C頁面重新整理 (當然,也可以使用子視窗的 opener 物件來獲得父視窗的物件:window.opener.document.location.reload(); )

"top.location.reload();": A頁面重新整理

Js 控制頁面跳轉的幾種方法

第一種:

<script language="javascript" type="text/javascript">
           window.location.href="login.jsp?backurl="+window.location.href; 
    </script>

 第二種:

<script language="javascript">
alert("返回");
window.history.back(-1);
   </script>

 第三種:

<script language="javascript">
window.navigate("top.jsp");
  </script>

 第四種:

<script language="JavaScript">
          self.location='top.htm';
   </script>

 第五種:

<script language="javascript">
          alert("非法訪問!");
          top.location='xx.jsp';
   </script>

 第六種:

<script type="text/javascript">
// 頁面若在框架內,則跳出框架
if (self != top) {
  top.location = self.location;
}; 

</script>

 第七種:

自定義時間跳轉(方法一):

<script language="javascript">
var secs = 3; //倒計時的秒數 
var URL ;
function Load(url){
URL = url;
for(var i=secs;i>=0;i--) 
{ 
  window.setTimeout('doUpdate(' + i + ')', (secs-i) * 1000); 
} 
}
function doUpdate(num) 
{ 
document.getElementById('ShowDiv').innerHTML = '將在'+num+'秒後自動跳轉到主頁' ;
if(num == 0) { window.location = URL; }
}
</script>

然後在裡面加上   index.asp為自己要跳轉的頁面。

在之間加上

自定義時間跳轉(方法二):

<p style="text-indent: 2em; margin-top: 30px;">
系統將在 <span id="time">5</span> 秒鐘後自動跳轉至新網址,如果未能跳轉,<a href="http://www.jb51.net" title="點選訪問">請點選</a>。 
<script type="text/javascript">  
  delayURL();	
  function delayURL() { 
    var delay = document.getElementById("time").innerHTML;
 var t = setTimeout("delayURL()", 1000);
    if (delay > 0) {
      delay--;
      document.getElementById("time").innerHTML = delay;
    } else {
   clearTimeout(t); 
      window.location.href = "http://www.jb51.net";
    }		
  } 
</script>

相關推薦

jsjsp所有頁面總結

Jsp 頁面跳轉的幾種方法 1. RequestDispatcher.forward() 在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是JSP到另外的一個Servlet、JSP 或普通HTML檔案,也即你的form提交至a.js

原生jsjQuery實現頁面的學習

js的實現 1.window.location.href方式     <script language="javascript" type="text/javascript">

JSP、Servlet中的相對路徑絕對路徑 頁面問題

Forward 高,  Redirect 低, 因為Redirect 的流程是這樣的,  request1  sent to server,  server return back to client, 然後 request2 then sent to server. 但是Forward 僅在s

jsp頁面的幾種方法小結

1. RequestDispatcher.forward()   在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是JSP到另外的一個Servlet、JSP 或普通HTML檔案,也即你的form提交至a.js

(javaweb)jsp登入頁面後出錯:The requested resource is not available.

想做一個簡單的登入系統,實現“輸入正確的賬號密碼後會進入首頁,錯誤則顯示警告“的功能。不過在測試時,儘管能進入登入介面,並且輸入了正確的賬號和密碼,但是點選登入時,網頁提示錯誤了,如圖 網上提供的解決方法有許多,最多還是說Tomcat的web.xml檔案配置錯

Android中使用Intent實現一般頁面帶引數頁面

一、Intent介紹 Intent的理解       Intent, 直譯為意圖, 也就是你想要做什麼或想要去哪?       Intent是Activity, Service和BroadcastReceiver這三個應用元

JSP頁面後獲取表單資訊的方法述用到(hidden)(session)

假設現在有三個頁面分別是test1.jsp,test2.jsp,test3.jsp 在test1.jsp頁面中填寫名字username資訊 在test2.jsp頁面中填寫興趣愛好amuse資訊 頁面從test1.jsp中以表單形式跳轉到test2.jsp中,繼續以表單形

談談requestresponse的頁面

jsp或Servlet都會用到頁面跳轉,可以用request.getRequestDispatcher("p3.jsp").forward(request,response);這種方法稱為轉發,位址列上的URL不會改變;response.sendRedirect("p3.js

servlet的後臺頁面ajax的頁面

1.servlet的頁面跳轉 Servlet:當然,在servlet中,一般跳轉都發生在doGet, doPost等方法裡面。1) redirect 方式response.sendRedirect("/a.jsp");頁面的路徑是相對路徑。sendRedirect可以將頁面

jsp頁面的幾種方法

1. RequestDispatcher.forward()  在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是JSP到另外的一個Servlet、JSP 或普通HTML檔案,也即你的form提交至a.jsp,在a.jsp用到了forward

Jsp頁面js控制頁面的幾種方法

Jsp 頁面跳轉的幾種方法 1. RequestDispatcher.forward() 在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是JSP到另外的一個Servlet、JSP 或普通HTML檔

返回 字符串的 formjs組合讓頁面

back ucc mes reac mount new eth ons result router.get("/wy/jhy").handler(ctx->{ ctx.request().response().setChunk

Java Web jsp中有關頁面轉發與重定向的區別

響應頭 通過設定響應頭實現頁面跳轉,並且在面試中也會問及是否是重定向還是轉發 最後給大家簡單介紹轉發和重定向的區別 Location Location需要與狀態碼302配合使用,完成頁面重定向 Location: http://www.banma.com 指定頁面要

JS彈出框、對話方塊、提示框,JS關閉視窗、關閉頁面JS控制頁面

1. RequestDispatcher.forward() 在伺服器端起作用,當使用forward()時,Servlet engine傳遞HTTP請求從當前的Servlet或者是JSP到另外的一個Servlet、JSP 或普通HTML檔案,也即你的form提交至a.jsp,在a.jsp用到了forw

jsp頁面請求轉發請求重定向的區別

jsp實質上就是一個servlet,在完成多頁面跳轉的時候有倆種方式1.請求轉發2.請求重定向 用servlet來舉列子實現(現把三個Servlet在專案的web.xml中初始化和對映哦) 列子思路:寫好一個介面,裡面有請求轉發實現的servlet(圖中:ForwardServlet),和請

js頁面開啟新頁面

第一種:     <script language="javascript" type="text/javascript">            window.location.href="http://www.dollare.com.cn/login.php

頁面jsSpringMVC

js:點選新建按鈕時呼叫 function createJob() { var url = '/opti/createJob'; window.location.href = url;

js 中實現頁面的方法(window.locationwindow.open的區別)

<html> <head> <script language="javascript"><!-- function old_page() { window.location = "http:

JSP頁面的方法總結

java.lang.IllegalStateException: Error: Attempt to clear a buffer that's already been flushedorg.apache.jasper.runtime.PageContextImpl.doForward(PageContex

jsp頁面定時自動重新整理按F5重新整理

定時自動重新整理跳轉(5秒後跳到index.html頁面): <meta http-equiv="refresh" content="5,url=index.html"> 鍵盤按鍵控制跳轉: <script> document.onkeydow