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

jsp三種頁面跳轉方式的比較

編輯:關於JSP

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

1. response.sendRedirect();
2. response.setHeader("Location","");
3.

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

一. response.sendRedirect()

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

java.lang.IllegalStateException: Cant 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(),如果有,會有異常:

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