天天看點

java轉發和重定向取值_java中轉發和重定向的差別

轉發:

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

在伺服器元件收到使用者請求後。經過它的處理後有傳遞給了另一個元件。不修改使用者的請求碼。各元件處理完之後在傳回給使用者,例如首頁面的架構。

使用者請求-----》伺服器-------》元件1-------》元件2------->伺服器-------》使用者

(請求不變)

重定向:

response.sendRedirect("success.jsp");

在伺服器元件收到使用者請求後。經過處理修改使用者請求。在傳回給使用者。這樣使用者再次使用這個請求就會被動的使用新的請求了。(重定向一般是為了防止使用者送出完資料後點浏覽器重新整理或點後退之後産生重複送出)

使用者請求-----》伺服器-------》元件------>伺服器-------》使用者-------》新的請求

(修改使用者請求)

轉發你注意一下位址欄的位址是不變的,request.getRequestDispatcher("success.jsp").forward(request,response);轉發請求到達servlet或者action擷取請求參數(如果有)完成相應的業務邏輯,然後輸出相應界面,這時是帶着傳回資料的(如果有),傳回資料在request或者response,相應頁面會輸出相應資料,如果你的響應是有傳回資料的,必須用轉發。

重定向你注意一下位址欄的位址不是你發送請求的位址,最終會變化成你重定向的位址

response.sendRedirect("success.jsp"); 重定向發送請求到達servlet或者action接收請求參數處理相關的業務邏輯之後,會清除request和response中的資料,到達重定向的頁面是不能夠接收和顯示資料的