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的屬性範圍,無法進行其屬性的傳遞。
會在整個頁面的代碼執行完後,才執行跳轉。