java的重定向在struts2,sertvlet跳轉有重定向,和重定向不同的顯示信息的方式是轉發;重定向主要是從action或servlet跳轉到頁面,首先地址欄變化為跳轉指定的路徑,另一點就是重定向的頁面不能使用servlet或action中的全局變數來顯示信息;而轉發相反action或servlet中的全局參數是可以用來顯示信息的,而且地址欄任然是action或者servle的地址
Ⅱ java重定向問題
轉發是向伺服器請求了一次,在這個過程中request都有效,而重定向就不一樣了,重定向其實是向伺服器請求了兩次,第一次向伺服器請求,伺服器給客戶端一個響應碼,客戶端帶著這個響應碼再向伺服器請求一次,request在第一次請求時有效,在第二次請求時request已被銷毀,所以無效。
Ⅲ java中轉發和重定向的區別
轉發與重定向的區別如下:
轉發是伺服器行為,重定向是客戶端行為
1.轉發在伺服器端完成的;重定向是在客戶端完成的
2.轉發的速度快;重定向速度慢
3.轉發的是同一次請求;重定向是兩次不同請求
4.轉發不會執行轉發後的代碼;重定向會執行重定向之後的代碼
5.轉發地址欄沒有變化;重定向地址欄有變化
6.轉發必須是在同一台伺服器下完成;重定向可以在不同的伺服器下完成
在servlet中調用轉發、重定向的語句如下:
request.getRequestDispatcher("new.jsp").forward(request,
response);//轉發到new.jsp
response.sendRedirect("new.jsp");//重定向到new.jsp
轉發過程:客戶瀏覽器發送http請求,web伺服器接受此請求,調用內部的一個方法在容器內部完成請求處理和轉發動作,將目標資源發送給客戶;在這里,轉發的路徑必須是同一個web容器下的url,其不能轉向到其他的web路徑上去,中間傳遞的是自己的容器內的request。在客戶瀏覽器路徑欄顯示的仍然是其第一次訪問的路徑,也就是說客戶是感覺不到伺服器做了轉發的。轉發行為是瀏覽器只做了一次訪問請求。
重定向過程:客戶瀏覽器發送http請求,web伺服器接受後發送302狀態碼響應及對應新的location給客戶瀏覽器,客戶瀏覽器發現是302響應,則自動再發送一個新的http請求,請求url是新的location地址,伺服器根據此請求尋找資源並發送給客戶。在這里location可以重定向到任意URL,既然是瀏覽器重新發出了請求,則就沒有什麼request傳遞的概念了。在客戶瀏覽器路徑欄顯示的是其重定向的路徑,客戶可以觀察到地址的變化的。重定向行為是瀏覽器做了至少兩次的訪問請求的。
重定向,其實是兩次request
第一次,客戶端request
A,伺服器響應,並response回來,告訴瀏覽器,你應該去B。這個時候IE可以看到地址變了,而且歷史的回退按鈕也亮了。重定向可以訪問自己web應用以外的資源。在重定向的過程中,傳輸的信息會被丟失。