forward與redirect之區別

2021-08-25 18:00:54 字數 2280 閱讀 6767

forward方式:request.getrequestdispatcher("/somepage.jsp").forwardrequest, response);     

redirect方式:response.sendredirect("/somepage.jsp");

forward是伺服器內部重定向,程式收到請求後重新定向到另乙個程式,客戶機並不知道;redirect則是伺服器收到請求後傳送乙個狀態頭給客 戶,客戶將再請求一次,這裡多了兩次網路通訊的來往。當然forward也有缺點,就是forward的頁面的路徑如果是相對路徑就會有些問題了。    forward 會將 request state , bean 等等資訊帶往下乙個 jsp

redirect 是送到 client 端後再一次 request , 所以資料不被保留.

使用 forward 你就可以用 getattribute() 來取的前乙個 jsp 所放入的 bean 等等資料

1.從位址列顯示來說

forward是伺服器請求資源,伺服器直接訪問目標位址的url,把那個url的響應內容讀取過來,然後把這些內容再發給瀏覽器.瀏覽器根本不知道伺服器傳送的內容從**來的,所以它的位址列還是原來的位址.

redirect是服務端根據邏輯,傳送乙個狀態碼,告訴瀏覽器重新去請求那個位址.所以位址列顯示的是新的url.所以redirect等於客戶端向伺服器端發出兩次request,同時也接受兩次response。

2.從資料共享來說

forward:**頁面和**到的頁面可以共享request裡面的資料.

redirect:不能共享資料.

redirect不僅可以重定向到當前應用程式的其他資源,還可以重定向到同乙個站點上的其他應用程式中的資源,甚至是使用絕對url重定向到其他站點的資源.

forward,方法只能在同乙個web應用程式內的資源之間**請求.forward 是伺服器內部的一種操作.

redirect 是伺服器通知客戶端,讓客戶端重新發起請求.

所以,你可以說 redirect 是一種間接的請求, 但是你不能說"乙個請求是屬於forward還是redirect "

3.從運用地方來說

forward:一般用於使用者登陸的時候,根據角色**到相應的模組.

redirect:一般用於使用者登出登陸時返回主頁面和跳轉到其它的**等.

4.從效率來說

forward:高.

redirect:低.

5.jsp 語法

"} />

或者這樣寫:

"} >

}" />+

6.例子

描述 標籤從乙個jsp檔案向另乙個檔案傳遞乙個包含使用者請求的request物件.標籤以下的**,將不能執行.

你能夠向目標檔案傳送引數和值,在這個例子中我們傳遞的引數名為username,值為scott,如果你使用了標籤的話,目標檔案必須是乙個動態的檔案,能夠處理引數.

如果你使用了非緩衝輸出的話,那麼使用時就要小心。

如果在你使用之前,jsp檔案已經有了資料,那麼檔案執行就會出錯.

屬性 page=""

這裡是乙個表示式或是乙個字串用於說明你將要定向的檔案或url.這個檔案可以是jsp,程式段,或者其它能夠處理request物件的檔案(如asp,cgi,php).

}" />+

向乙個動態檔案傳送乙個或多個引數,這個檔案一定是動態檔案.

如果你想傳遞多個引數,你可以在乙個jsp檔案中使用多個。name指定引數名,value指定引數值.

例子 <%@ page contenttype="text/html;charset=gb2312" %>

forwardto.jsp

<%@ page contenttype="text/html;charset=gb2312" %>

<%

string usename=request.getparameter("username");

string outstr= "謝謝光臨!";

outstr+=usename;

out.println(outstr);

%>

redirect的例子:

譬如:client 通過***\index.jsp?name=gauss&pwd=123訪問index.jsp,而index.jsp中有< jsp:forward page="login.jsp"/>,則在login.jsp中可以通過request.getparameter()得到name和pwd, 而<%response.sendredirect("login.jsp");%>得不到。

JAVA中Forward和Redirect的區別

forward和redirect代表了兩種請求 方式 直接 和間接 使用者向伺服器傳送了一次http請求,這個請求可能被直接請求 forward 和間接請求 redirect 兩種 方式有何區別呢?直接 就相當於 a找b借錢,b沒有,b去找c借,並告訴c把錢給a 間接 就相當於 a找b借錢,b沒有,...

jsp中的forward和redirect的區別

一 呼叫方式 我們知道,在servlet中呼叫 重定向的語句如下 request.getrequestdispatcher new.jsp forward request,response 到new.jsp response.sendredirect new.jsp 重定向到new.jsp 在jsp...

Forward與include的區別

forward與 include 的區別 標籤用於把另外乙個資源的輸出內容插入進當前 jsp頁面的輸出內容之中,這種在 jsp頁面執行時的引入方式稱之為動態引入。從乙個jsp檔案傳遞 request 資訊到另外乙個 jsp檔案,後面的部分將不會被執行。可以使用 傳遞引數。將包含的檔案放在 jsp中和...