按鈕式:
<INPUT name="pclog" type="button" value="GO" onClick="location.href='http://9ba.cn/'">
連結式:
<a href="javascript:history.go(-1)">返回上一步</a>
<a href="<%=Request.ServerVariables("HTTP_REFERER")%>">返回上一步</a>
直接跳轉式:
<script>window.location.href='http://www.9ba.cn';</script>
開新視窗:
<a href="javascript:" onClick="window.open('http://www.9ba.cn/post/235.html','','height=500,width =611,scrollbars=yes,status=yes')">雲上的日子</a>
JSP跳轉方式
使用JSP大約有下列三種跳轉方式:
1. response.sendRedirect();
2. response.setHeader("Location","");
3. <jsp:forward page="" />
經過實驗得到下面的一些規則:
一. response.sendRedirect()
此語句前不允許有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(),如果有,頁面不會跳轉。
跳轉後瀏覽器地址欄變化
此語句後面的語句執行完成後才會跳轉
三. <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)
...
跳轉後瀏覽器地址欄不變,但是只能跳到當前主機下
此語句後面的語句執行完成後才會跳轉
由於response.sendRedirect()之前不能有任何HTML輸出.
要想在重新導向之前輸出一些提示資訊,可能會想到:
out.println("<script>alert(''錯誤資訊'')</script>");
response.sendRedirect(index.html);
return;
但這個簡單的想法,怎麼也實現不了.
沒辦法....只好另想他法
1.全部用out.println輸出javascript,由javascript完成重新導向
out.println("<script>alert(''錯誤資訊'')</script>");
out.println("<script>window.location.href=''index.jsp''</script>");
return;
2.用Header頭重新整理到重新導向頁面
out.println("<script>alert(''錯誤資訊'')</script>");
response.setHeader("refresh","1;url=index.jsp");
return;
3.用java swing 組件的 JOptionPane 代替 javascript 提示框,由sendRedirect()完成重新導向
javax.swing.JOptionPane.showMessageDialog(null, "錯誤資訊");
response.sendRedirect("index.jsp");
return;