轉發與重定向區別小結

很多人在初學Servlet的時候,對于轉發與重定向的概念很模糊,使用起來也是覺得一頭霧水,不知道什么時候該用哪個方法。以下的解說或許會對你有所幫助:
我們先用調用的代碼直觀地感受一下他們的不同:

轉發的調用為:request.getRequestDispatcher("page.jsp").forward(request, response);//轉發到page.jsp
重定向的調用為:response.sendRedirect("page.jsp");//重定向到page.jsp

首先重定向和轉發有一個重要的不同:使用轉發時,JSP容器會使用一個內部的方法來調用目標頁面,新的頁面繼續處理同一個請求,而瀏覽器將不會知道這個過程。 與之相反,重定向方式的含義是第一個頁面通知瀏覽器發送一個新的頁面請求。造成這一區別的原因主要是當我們使用重定向時,瀏覽器中所顯示的URL會變成新頁面的URL, 而當使用轉發時,該URL會保持不變。重定向的速度比轉發慢,因為瀏覽器還得發出一個新的請求。同時,因為重定向方式產生了一個新的請求,所以經過一次重 定向后,request內的對象將無法使用。

因此怎樣選擇是重定向還是轉發呢?我們不妨可以根據需要來靈活地選擇。規則就是,一般情況下轉發更快,并且能保持request中的對象。但是在轉發之后,瀏覽器的URL不會變,依然是開始是頁面,再次重載之后顯示的將會是開始頁面。如果你不希望看到這種情況,請使用重定向。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容