程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP頁面跳轉的實戰規則

JSP頁面跳轉的實戰規則

編輯:關於JSP

      使用JSP大約有下列三種跳轉方式:

    1. response.sendRedirect();

    2. response.setHeader("Location","");

    3. <jsp:forward page="" />

    經過試驗得到下面的一些規則:

    一. response.sendRedirect()

    此語句前不允許有out.flush(),如果有out.flush(),會有異常:

    java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client.

    at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)

    ...

    跳轉後浏覽器地址欄變化

    如果要跳到不同主機下,跳轉後,此語句後面的語句會繼續執行,如同新開了線程,但是對 response的操作已經無意義了;

    如果要跳到相同主機下,此語句後面的語句執行完成後才會跳轉;

    二. response.setHeader("Location","")

    此語句前不允許有out.flush(),如果有out.flush(),頁面不會跳轉。

    跳轉後浏覽器地址欄變化

    此語句後面的語句執行完成後才會跳轉

    三. <jsp:forward page="" />

    此語句前不允許有out.flush(),如果有,會有異常:

    java.lang.IllegalStateException: forward() not allowed after buffer has committed.

    at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:134)

    at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:101)

    at com.caucho.jsp.PageContextImpl.forward(PageContextImpl.java:836)

    ...

    跳轉後浏覽器地址欄不變,但是只能跳到當前主機下

    此語句後面的語句執行完成後才會跳轉
     

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved