使用JSP大約有下列三種跳轉方式
responsesendRedirect();
responsesetHeader("Location""");
<jsp:forward page="" />
經過試驗得到下面的一些規則
一 responsesendRedirect()
此語句前不允許有outflush()如果有outflush()會有異常
javalangIllegalStateException: Cant sendRedirect() after data has committed to the client
at comcauchoserverconnectionAbstractHttpResponsesendRedirect(AbstractHttpResponsejava:)
跳轉後浏覽器地址欄變化
如果要跳到不同主機下跳轉後此語句後面的語句會繼續執行如同新開了線程但是對 response的操作已經無意義了
如果要跳到相同主機下此語句後面的語句執行完成後才會跳轉
二 responsesetHeader("Location""")
此語句前不允許有outflush()如果有outflush()頁面不會跳轉
跳轉後浏覽器地址欄變化
此語句後面的語句執行完成後才會跳轉
三 <jsp:forward page="" />
此語句前不允許有outflush()如果有會有異常
javalangIllegalStateException: forward() not allowed after buffer has committed
at comcauchoserverwebappRequestDispatcherImplforward(RequestDispatcherImpljava:)
at comcauchoserverwebappRequestDispatcherImplforward(RequestDispatcherImpljava:)
at comcauchojspPageContextImplforward(PageContextImpljava:)
跳轉後浏覽器地址欄不變但是只能跳到當前主機下
此語句後面的語句執行完成後才會跳轉
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20615.html