天天看點

初識 JSP---(轉發和重定向)轉發和重定向

轉發和重定向

在 JavaWeb 中,有兩種跳轉方式:

1.轉發  2.重定向

轉發

用戶端通路 servlet ,有轉發指令,将 servlet 發送給另一個servlet,然後由這個 servlet 傳回給用戶端,這就是轉發(整個過程中對伺服器的請求隻發送一次)

隻發出一次請求,位址欄是初次發出的請求位址,在最終的servlet中,request對象和中轉的request的對象是同一個request對象,隻能轉發目前web應用資源(“/”代表的是相當于web工程的路徑 如果是相對路徑就不用寫“/”)

例子:response.sendDispatcher("showLogin")(告知轉發器要跳轉到那個頁面去). forword(req,resp);(通過轉發器進行轉發)

結果(位址欄不發生改變)

重定向

用戶端通路 servlet ,有重定向指令,将 servlet 先傳回用戶端(跟伺服器連結斷開),用戶端再發起一次請求給另一個 servlet,然後由這個 servlet 傳回給客戶,這就是重定向(整個過程中對伺服器的請求發送兩次)

重定向是發出兩(多)次請求,兩個請求不是同一個request,位址欄是最後送出請求的位址。如果“/”寫在重定向的話,代表的是web站點的根路徑

例子:response.sendRedirect("ServletForWard1");

結果(位址欄發生改變)

轉發和重定向的差別

1.本質差別:轉發實質上隻發送一次請求,重定向實質上發送兩次請求

2.轉發請求的第一個request對象和中轉request對象是同一個request對象,重定向的請求request對象和中轉request對象不是同一個request對象

3.轉發隻能将請求發送給web資源(目前項目),重定向可以發送給任意資源

4.轉發的位址欄是第一次請求的位址,重定向的位址欄是最後一次請求的位址

5.轉發:“/”代表web項目的根路徑,重定向:“/”代表web站點的根路徑

包含:include

例子:

結果

繼續閱讀