客戶端跳轉與服務器端跳轉的區別
客戶端跳轉與服務器端跳轉的區別
客戶端跳轉與服務器端跳轉的區別
客戶端跳轉時用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、客戶端跳轉“/”代表服務器跟路徑(localhost:8080)
7、客戶端跳轉“.”代表當前工程項目根路徑(http://localhost:8080/addressbook)
服務器端跳轉(容器內跳轉):能夠自動的在服務器內部進行跳轉,這種跳轉對用戶來說是透明的。兩次跳轉時同一個request,在地址欄中顯示的事第一次頁面地址。
只能進行站點內跳轉。
1、<jsp:forward page=””/> --寫在jsp頁面內的跳轉
2、pageContext.forward(); --寫在jsp頁面內的跳轉
3、 request.getRequestDispatcher("1.jsp").forward(request,response);
4、 服務器端跳轉“/”代表當前請求根路徑(http://localhost:8080/addressbooktest/GoServlet)
5、 服務器端跳轉“.”代表當前請求根路徑(http://localhost:8080/addressbooktest/GoServlet)
posted on 2013-03-18 10:05 何云隆 閱讀(2145) 評論(0) 編輯 收藏 所屬分類: Jsp