關於request、response轉發與重定向的簡述

在做頁面的請求與響應的時候我們多用request與response進行操作,而我們大家也知道,request是表示用戶發向服務器的請求,而response是對用戶請求的一個響應。

     關於轉發和重定向,通俗的講轉發就像是你向售後技術支持打電話問問題,打過去是客服小王接的,但是小王無法解決,他讓你等會兒,別掛電話,然後他去把問題告訴小李,讓小李過來幫你解決,雖然換了人解決可是還是在這個售後處解決了問題。而重定向呢,就是小王說這個不歸他們管,我們處理不了,讓你打給12315投訴吧。然後你打電話給12315投訴解決了。大概就是這樣的。

       因此在轉發的時候你的地址欄內容不會變,發過去的請求也在,也就是說request中的內容沒有改變,可以使用request進行值傳遞。

而重定向的過程地址欄發生改變,你的請求也在重定向的時候丟失,原因是在第二次請求時,是再一次對服務器的訪問,服務器會重寫request內容。

下面是轉發和重定向的代碼:

轉發:

request.getRequestDispatcher("").forward(request, response);

重定向:

response.sendRedirect("");

談到轉發和重定向就不得不提一下其中的區別:

 

 

轉發

重定向

請求次數

瀏覽器僅發送一次請求、一次響應

發送兩次請求,兩次響應

地址欄是否變化

地址欄不發生變化

地址欄變成重定向的地址

範圍

只能轉到本項目的Servlet或其他頁面

能重定向到不只本項目的Servlet或者其他頁面

實施及地址

是有服務器轉發的,根目錄爲項目地址

是由瀏覽器再次請求,根目錄是瀏覽器目錄

 

*用到重定向和轉發時要注意的問題:

在做增刪改請求操作的時候不可用轉發,只能用重定向

原因:由於轉發之後地址欄不變,請求(request)內容不變,再次刷新頁面的時候,請求將再次發送,造成重複操作執行,造成錯誤。

在做查詢操作時,只能轉發,不能使用重定性。

原因:重定向後請求會將原本的查詢請求覆蓋,刷新之後將得不到要查詢的數據。

以上爲個人學習總結,歡迎技術大牛路過指定批評。

 

原網址:

https://www.cnblogs.com/Mr-Dawei/p/7355933.html

發佈了33 篇原創文章 · 獲贊 28 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章