服務器端跳轉和客戶端跳轉

1、服務器端跳轉:

當客戶端向服務器發送一個請求,請求當前頁面A時,這個頁面A在服務器""內部跳轉到另一個 頁面C,  向客戶端返回一個響應(頁面C)(即客戶端只產生了一次請求)。

 

request.getRequestDispatcher("listHero").forward(request, response);//服務器跳轉

forward方式只能跳轉到本web應用中的頁面上

跳轉後瀏覽器地址欄不會變化。

使用這種方式跳轉,傳值可以使用三種方法:url中帶parameter,session,request.setAttribute;未超出request的屬性範圍,request屬性能夠保存到跳轉頁。

JSP執行到跳轉語句時會立刻進行跳轉,不再執行之後的代碼;所以在執行服務器端跳轉時,一定要在跳轉語句之前釋放掉臨界資源(如數據庫連接,I\O流操作等)。

2、客戶端跳轉:

又稱爲外部跳轉,當客戶端向服務器發送一個請求,請求當前資源時,這個資源向客戶端發送一個去請求其他地址的迴應。客戶端再根據這個地址去進行下一次請求(即客戶端產生了兩次請求)。

 

response.sendRedirect("listHero");// 客戶端跳轉

sendRedirect可以將頁面跳轉到任何頁面,不侷限於本web應用中,如:response.sendRedirect(http://www.baidu.com);此時url會變成http://www.baidu.com

跳轉後瀏覽器地址欄變化,地址欄會改變爲第二次請求的URL。

這種方式要傳值出去的話,只能在url中帶parameter或者放在session中,無法使用request.setAttribute來傳遞,即超出了request的屬性範圍,無法進行其屬性的傳遞。

會在整個頁面的代碼執行完後,才執行跳轉。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章