導航:首頁 > 編程語言 > java轉發與重定向

java轉發與重定向

發布時間:2024-03-31 00:53:38

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應用以外的資源。在重定向的過程中,傳輸的信息會被丟失。

㈡ java 中,什麼時候用轉發,什麼用重定向

轉發是伺服器內部跳轉,數據不會丟失,瀏覽器只提交了一次請求
重定向是客戶端二次跳轉,數據會丟失,瀏覽器提交了二次請求
做增、刪、改的時候最好用重定向,因為如果不用重定向,每次刷新頁面就相當於再請求一次,就可能會做額外的操作,導致數據不對。

㈢ 在java中,JSP重定向,轉發,Cookie,session

首先要明白這些對象的作用以及聯系,(第一、第二種情況解釋):先要知道這些對象是存在哪裡的.其次是了解這些對象的作用范圍,先說第一種情況吧.用重定向就是重新發送一個請求..你可以用firefox的firebug工具(或者chrome自帶的開發者工具看一下)重定向是向伺服器重新發一個請求.第一cookie是存在於瀏覽器中的,也就是如果你把cookie寫入了你的硬碟,那麼每次當你用該瀏覽器不管訪問那個頁面都會看到你寫到硬碟中的cookie.而重定向就是再一次發起請求.就是這個請求以外的請求了.因為你的上一個請求的處理把cookie放入到了瀏覽器中.所以再進行一次請求當然能夠獲取到cookie的值了.
還有第二種情況是請求轉發.這種情況是不會再一次請求伺服器的.請求轉發的一次是把你本次的請求交給另一個處理程序處理.當然,請求的參數還是剛開始你提交的那些參數(並不包括你後來寫到瀏覽器中的cookie的值了)。要理解第一、第二中情況,就要理解cookie是存在於瀏覽器中的,只要瀏覽器不清除cookie的信息,只要你訪問任何網頁都會有cookie的值噢..2、就是要理解重定向跟請求轉發的區別,重定向是在本次請求響應之後又向伺服器發送了與上次請求毫不相乾的請求.而此時cookie已經在瀏覽器中了.所以就會看到cookie的值了.而請求轉發雖然在轉發的時候也把cookie的值寫到了瀏覽器中.但是這次轉發的請求還是上一次的請求..參數也全部一樣.所以這次的請求中並不包括cookie的值
(第三、第四種情況解釋)如果進行了重定向或者請求轉發,那麼就相當於該請求或者又發起的請求已經進入了另一個程序中處理.所以這兩個語句後面的語句都將不會執行了.所以根本沒有寫入cookie
至於第五第六中情況的話,那隻能說我第三第四種情況理解有點錯誤.不過按說這兩個語句後面的應該都不會執行的.
第七第八種情況是因為session是一次會話中設置的值.只要每個瀏覽器對session的處理不一樣,有些瀏覽器就是如果該瀏覽器不關閉,那麼session永遠存在(除非session設置了過期的最長不活動時間)那麼session有可能失效,所以一般如果你把session寫入伺服器,那麼什麼時候訪問都會有值的..

㈣ java開發了一個web系統,由登陸頁面進入主界面是用轉發好還是重定向好

由登陸頁面進入主界面通常情況下轉發更快,而且能保持request內的對象,但是在轉發之後,瀏覽器中URL仍然指向開始頁面,此時如果重載當前頁面,開始頁面將會被重新調用。詳細信息可以通過千鋒教育進行了解,千鋒Java現已擁有成熟獨立的項目庫,項目均1:1引進大廠項目,授課採用 CREA 項目研發模型。

轉發是指當一個Servlet處理請求的時候,它可以決定自己不繼續處理,而是轉發給另一個Servlet處理;重定向是指當瀏覽器請求一個URL時,伺服器返回一個重定向指令,告訴瀏覽器地址已經變了,麻煩使用新的URL再重新發送新請求。

想要了解更多有關Java的相關信息,推薦咨詢千鋒教育。千鋒勵精圖治,不改教育初心。十一年來,千鋒以政策為引導,不斷完善國內特色現代職業教育體系建設,充分發揮教研師資隊伍使命,構建品質教育,加大創新型人才培養力度,為經濟發展提供智力人才和智力支撐,成為新時期職業教育發展的新方向,在同行業中有很高的美譽度。

㈤ JAVA里重定向,轉發,轉向有什麼區別

java 重定向和轉發的區別
重定向和轉發有一個重要的不同:當使用轉發時,JSP容器將使用一個內部的方法來調用目標頁面,新的頁面繼續處理同一個請求,而瀏覽器將不會知道這個過程。 與之相反,重定向方式的含義是第一個頁面通知瀏覽器發送一個新的頁面請求。因為,當你使用重定向時,瀏覽器中所顯示的URL會變成新頁面的URL, 而當使用轉發時,該URL會保持不變。重定向的速度比轉發慢,因為瀏覽器還得發出一個新的請求。同時,由於重定向方式產生了一個新的請求,所以經過一次重 定向後,request內的對象將無法使用。
轉發和重定向的區別
不要僅僅為了把變數傳到下一個頁面而使用session作用域,那會無故增大變數的作用域,轉發也許可以幫助你解決這個問題。
重定向:以前的request中存放的變數全部失效,並進入一個新的request作用域。
轉發:以前的request中存放的變數不會失效,就像把兩個頁面拼到了一起。

閱讀全文

與java轉發與重定向相關的資料

熱點內容
spwm軟體演算法 瀏覽:184
70多歲單身程序員 瀏覽:221
高考考前解壓拓展訓練 瀏覽:217
用紙做解壓玩具不用澆水 瀏覽:584
谷輪壓縮機序列號 瀏覽:736
牛頓插值法編程 瀏覽:366
php多用戶留言系統 瀏覽:729
安卓和蘋果如何切換流量 瀏覽:703
怎麼知道dns伺服器是多少 瀏覽:976
5995用什麼簡便演算法脫式計算 瀏覽:918
電腦上如何上小米雲伺服器地址 瀏覽:921
手機資料解壓密碼 瀏覽:444
44引腳貼片單片機有哪些 瀏覽:692
阿里程序員腦圖 瀏覽:189
廣東編程貓學習班 瀏覽:708
上海數控編程培訓學校 瀏覽:313
怎麼下載我的解壓神器 瀏覽:634
lib文件無用代碼會編譯嗎 瀏覽:28
我的世界嗨皮咳嗽伺服器怎麼下 瀏覽:1003
mvn命令順序 瀏覽:978