重定向和轉發有一個重要的差異:當使用轉送時,JSP容器將使用一個內部的方法來呼叫目標頁面,新的頁面繼續處理同一個請求,而瀏覽器將不會知道這個過程。 與之相反,重定向方式的含義是第一個頁面通知瀏覽器發送一個新的頁面請求。因為,當你使用重定向時,瀏覽器中所顯示的URL會變成新頁面的URL, 而當使用轉發時,該URL會保持不變。重定向的速度比轉送慢,因為瀏覽器還得發出一個新的請求。同時,由於重定向方式產生了一個新的請求,所以經過一次重定向後,request內的物件將無法使用。
怎麼選擇是重定向還是轉送呢?通常情況下轉送更快,而且能保持request內的對象,所以他是第一選擇。但由於在轉送之後,瀏覽器中URL仍指向開始頁面,此時如果重載目前頁面,開始頁面將會被重新呼叫。如果你不想看到這樣的情況,則選擇轉發。
轉送和重定向的區別
不要僅僅為了把變數傳到下一個頁面而使用session作用域,那會無故增大變數的作用域,轉發也許可以幫助你解決這個問題。
重定向:先前的request中存放的變數全部失效,並進入一個新的request作用域。
轉送:以前的request中存放的變數不會失效,就像把兩個頁面拼到了一起。