客戶端跳轉與伺服器端跳轉的區別
客戶端跳轉時用HttPservletResopse物件的sendRedirect函式實現,伺服器端跳轉是使用RequestDispather物件的forward方法實現的。這兩者之間的區別主要體現在三個方面:
1. 使用伺服器端跳轉時,客戶瀏覽器的位址列並不會顯示目標地址的URL,而是用客戶端跳轉時,位址列當中會顯示目標資源的URL;
2. 伺服器端跳轉是由客戶端傳送一個請求,請求一個伺服器資源——如JSP和Servlet——,這個資源又將請求轉到另一個伺服器資源,然後再給客戶端傳送一個響應,也就是說伺服器端跳轉是客戶端傳送一次請求,伺服器端給出一次響應;而客戶端跳轉的流程則不同。客戶端同樣是傳送一個請求給伺服器端資源,這個伺服器資源會首先給客戶端一個響應,客戶端再根據這個響應當中所包含的地址,再次向伺服器端傳送一個請求,也就是說客戶端跳轉是兩次請求,兩次響應;
3. 在進行客戶端跳轉和伺服器端跳轉時,都需要指定目標資源的URL,如果這個路徑以“”開始。在客戶端跳轉當中“”代表的是應用伺服器根目錄,而在伺服器端跳轉當中代表的是應用程式根目錄。
page = 頁面級別
request = 請求級別(與伺服器端跳轉配合使用)
session = 會話級別(客戶端跳轉(伺服器端跳轉也可,但是客戶端跳轉更加突出了session的作用範圍))
application = 應用級別
客戶端跳轉:伺服器端將請求結果返回給客戶端,客戶端向伺服器發出另一次請求。在客戶端跳轉過程中是兩次不同的請求。在位址列中顯示的是最後一次請求地址。
客戶端跳轉可以進行站外跳轉。
1、連結跳轉:<a href=””></a>
2、表單提交
3、Response.sendRedirect(“3.jsp”);
4、<mata http-equiv=”refresh”, content=”3;2.jsp”/>
5、response.setHeader(“refresh”,” 3;2.jsp”);
6、客戶端跳轉“/”代表伺服器跟路徑webapps
伺服器端跳轉(容器內跳轉):能夠自動的在伺服器內部進行跳轉,這種跳轉對使用者來說是透明的。兩次跳轉時同一個request,在位址列中顯示的事第一次頁面地址。
只能進行站點內跳轉。
1、<jsp:forward page=””/>
2、pageContext.forward();
3、 request.getRequestDispatcher("1.jsp").forward(request,response);
3、伺服器端跳轉“/”代表站點根路徑