針對JSP與Servlet:
轉發:服務器 接收到客戶端的請求之后,服務器把控制權交到另一個JSP頁面手里,新的JSP頁面接收到請求之后根據情況是繼續轉交控制權或者顯示頁面由自己決定,到最后顯示頁面的整個過程就是一個頁面跳轉過程,在這個過程中,服務器可以把請求的數據在經過的頁面進行傳遞,而不會擔心數據的丟失。
兩種重要的跳轉:
1.request.getRequestDispatcher("地址").forward(ServletRequest, ServletResponse);效率高,速度快
a.地址欄不改變跳轉——服務器端跳轉,服務器之間內部跳轉,相同的request,可傳參;
b.執行到跳轉語句后無條件立刻跳轉——之后的代碼不再被執行;
注意:如果使用forward跳轉,則一定要在跳轉之前釋放掉全部的資源;
c.使用forward時,request設置的屬性依然能保留在下一個頁面(setAttribute);
重定向 :首先服務器受到瀏覽器客戶端請求之后,服務器發送新的鏈接到客戶端瀏覽器,瀏覽器接收到新的鏈接之后又重新請求收到的鏈接地址,在整個過程中完成之后在客戶端瀏覽器看來是發生了一次跳轉,其實是客戶端瀏覽器請求了兩次而已,所以在瀏覽器的地址欄里網絡地址自然就會改變成新的連接。
2.response.sendRedirect(“地址”):效率低,速度慢
a.地址欄改變跳轉——客戶端跳轉
b.所有代碼執行完畢之后再跳轉,跳轉語句后面的代碼還是會執行,除非在其后面加上return(return)需復雜一些。
c.不能保存request屬性——兩次請求,地址改變了,客戶端跳轉,不同的request
d.通過對URL地址的重寫傳遞參數:
response.sendRedirect(“responseDemo04.jsp?id=mldn”);