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