JSP頁面跳轉大全

來源:互聯網
上載者:User

JSP中的跳轉:
(1). forward()方法
    使用到javax.servlet.RequestDispatcher類
    RequestDispatcher rd = getServletContext().getRequestDispatcher("url");
    rd.forward(requestVar,requestVar); //傳遞servlet的入口參數
    /*forward函數已經把原頁面的request,response對象傳入新的頁面,因此這新舊頁面擁有相同的request,response對象。request.getparameter("var")就可以得到相應的值.*/
    /*forward()是直接在server做的,瀏覽器並不知道,也不和瀏覽器打交道,瀏覽器的地址不變化。*/

    即:
    getServletContext().getRequestDispatcher("url").forward(requestVar,responseVar);

    伺服器端Servlet進行轉向的4種方法:
    1.ServletContext的getRequestDispatcher()    
    2.ServletContext的getNamedDispatcher()   
    3.ServletRequest的getRequestDispatcher()   
    4.ServletResponse的sendredirect()進行轉向。

    forward方法,因為這些這樣比較高效。只有在forward方法不能使用時,再使用servletresponse的sendredirect()方法。

(2).response.sendRedirect(url);  
    其實是向瀏覽器發送一個特殊的Header,然後由瀏覽器來做轉向,轉到指定的頁面,所以用sendRedirect時,瀏覽器的地址欄上可以看到地址的變化。新頁面不能處理舊頁面的pagecontext(request,response,...)對象.
    在response.sendRedirect之後,應該緊跟一句return;

(3).HTML語言的自動跳轉
    <html>
    <head>
        <meta http-equiv="refresh" content="0;url="http://www.baidu.com">
        0是等待時間,如果設定為5表示等待5s後開始跳轉
    </head>
    …………

(4).JavaScript跳轉
A:    <script languate="javascript">
                window.location.replace("http://www.baidu.com");
        </script>

B:    也可以直接給window.location屬性賦值,window.location="url",與A不同的是有記錄

C:    <script languate="javascript">
            document.location.href("http://www.google.com");
        </script>
        對於document,location不是不是對象,document.location=document.url

D:    history對象的forward(),back(),go()方法.go()方法需要一個整形入口參數
        <a href="javascript:history.go(-1)">返回上一步</a>
        等價於<a href="javascript:history.back()">返回上一步</a>

E:    document.formName.action="test.jsp";
       document.formName.submit();   //使用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>

(5).<jsp:forward page="nextpage.jsp"/>
    如:
       <jsp:forward page="/servlet/login" />
           <jsp:forward page="/servlet/login">
           <jsp:param name="username" value="jsmith" />
       </jsp:forward>
    <jsp:forward>標籤從一個JSP檔案向另一個檔案傳遞一個包含使用者請求的request對象.<jsp:forward>標籤以下的代碼,將不能執行.
可使用了<jsp:param>標籤的話向目標檔案傳送參數和值,目標檔案必須是一個動態檔案,能夠處理參數.
如果你使用了非緩衝輸出的話,那麼使用<jsp:forward>時就要小心。如果在你使用<jsp:forward>之前,jsp檔案已經有了資料,那麼檔案執行就會出錯.
  

JSP頁面跳轉方法薈萃
     1. response.sendRedirct("跳轉到頁面");
      該方法通過修改HTTP協議的HEADER部分,對瀏覽器下達重新導向指令的,使瀏覽器顯示重新導向網頁的內容. request無法傳值過去.
      執行完該頁所有代碼,然後再跳轉到頁面. 跳轉地址欄改變.
      可以跳轉到其他伺服器上的頁面response.sendRedirct(http://www.sun.com).
      2.response.setHeader(); 該方法和response.sendRedirect一樣,通過修改HTTP協議的HEADER部分.
      <% response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String
      newLocn="/index.html"; response.setHeader("Location",newLocn); % >
      3.<jsp:forward page="跳轉頁面"/>
      該方法是利用伺服器端先將資料輸出到緩衝區的機制,在把緩衝區的內容發送到用戶端之前,原來的不發送,改為發送該頁面的內容,如果
      在<jsp:forward>之前有很多輸出,前面的輸出已使緩衝區滿,將自動輸出到用戶端,那麼該語句將不起作用,這一點應該特別注意.
      request可以傳值過去. 直接跳轉到頁面,後面的代碼不執行. 跳轉後地址欄不變. 無法跳轉到其他伺服器上的頁面. 圖片不是絕對路徑無法顯示.
      4.request.getRequestDispatcher("跳轉頁面"); request可以傳值過去. 執行完該頁所有代碼,然後再跳轉到頁面.
      跳轉地址欄不變. 不可以跳轉到其他伺服器上的頁面 <% RequestDispatcher rd =
      request.getRequestDispatcher("to.jsp"); rd.forward(request,response); %>
      有以下3種方法可以做到輸出重新導向: RESPONSE.SETREDERECT("URL")
      該方法通過修改HTTP協議的HEADER部分,對瀏覽器下達重新導向指令的,使瀏覽器顯示重新導向網頁的內容.
      response.sendRedirect("http://localhost:7001/index.html");
下面的方法也能改變HTTP
      HEADER屬性,它的原理和 1 是一樣的
. <%response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String  newLocn="/index.html"; response.setHeader("Location",newLocn); % >
      採用<JSP:FORWORD>
      該方法是利用伺服器端先將資料輸出到緩衝區的機制,在把緩衝區的內容發送到用戶端之前,原來的不發送,改為發送該頁面的內容,如果在<JSP:
      FORWORD>之前有很多輸出,前面的輸出已使緩衝區滿,將自動輸出到用戶端,那麼該語句將不起作用,這一點應該特別注意.

  自己現在知道的在一個jsp頁面中嵌套另外一個jsp頁面,有三種方法: 1、通過<%@ include
      file="header.jsp"%>這種方法只能實現靜態頁面的載入,最常用是在一個項目中實現通用頁頭header.jsp和footer.jsp的載入。
      2、通過<%@ include page="tt.jsp"%>這種做法可以實現動態網頁面的載入,但其需要向頁面傳遞參數; 3、通過<iframe
      src="jsp的路徑">來向頁面載入另一個jsp頁面,是一個內聯架構。
     
       用forward傳參數的, 要這樣寫: <%String str="你已經登陸!"; %>
<jsp:forward page="index.jsp> <jsp:param name="name" value= <%=str%>/>
      </jsp:forward>

 

轉載自:http://younglibin.javaeye.com/blog/457872

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.