1.從地址欄顯示來說 forward是服務(wù)器請求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容 再發(fā)給瀏覽器.瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容從哪里來的,所以它的地址欄還是原來的地址. redirect是服務(wù)端根據(jù)邏輯,發(fā)送一個狀態(tài)碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是新的URL.所 以redirect等于客戶端向服務(wù)器端發(fā)出兩次request,同時也接受兩次response。 2.從數(shù)據(jù)共享來說 forward:轉(zhuǎn)發(fā)頁面和轉(zhuǎn)發(fā)到的頁面可以共享request里面的數(shù)據(jù). redirect:不能共享數(shù)據(jù). redirect不僅可以重定向到當(dāng)前應(yīng)用程序的其他資源,還可以重定向到同一個站點上的其他應(yīng)用程序中的資源, 甚至是使用絕對URL重定向到其他站點的資源. forward,方法只能在同一個Web應(yīng)用程序內(nèi)的資源之間轉(zhuǎn)發(fā)請求. forward 是服務(wù)器內(nèi)部的一種操作. redirect 是服務(wù)器通知客戶端,讓客戶端重新發(fā)起請求. 所以,你可以說 redirect 是一種間接的請求, 但是你不能說"一個請求是屬于forward還是redirect " 3.從運用地方來說 forward:一般用于用戶登陸的時候,根據(jù)角色轉(zhuǎn)發(fā)到相應(yīng)的模塊. redirect:一般用于用戶注銷登陸時返回主頁面和跳轉(zhuǎn)到其它的網(wǎng)站等. 4.從效率來說 forward:高. redirect:低. 5.jsp 語法 <jsp:forward page={"relativeurl" | "<%= expression %>"} /> 或者這樣寫: <jsp:forward page={"relativeurl" | "<%= expression %>"} > <jsp:param name="parametername" value="{parametervalue | <%= expression %>}" />+ </jsp:forward> 6.例子 <jsp:forward page="/servlet/login" /> <jsp:forward page="/servlet/login"> <jsp:param name="username" value="jsmith" /> </jsp:forward> 描述 <jsp:forward>標(biāo)簽從一個jsp文件向另一個文件傳遞一個包含用戶請求的request對象.<jsp:forward>標(biāo)簽以下的代碼,將不能執(zhí)行. 你能夠向目標(biāo)文件傳送參數(shù)和值,在這個例子中我們傳遞的參數(shù)名為username,值為scott,如果你使用了<jsp:param>標(biāo)簽的話,目標(biāo)文件必須是一個動態(tài)的文件,能夠處理參數(shù). 如果你使用了非緩沖輸出的話,那么使用<jsp:forward>時就要小心。 如果在你使用<jsp:forward>之前,jsp文件已經(jīng)有了數(shù)據(jù),那么文件執(zhí)行就會出錯. 屬性 page="{relativeurl | <%= expression %>}" 這里是一個表達式或是一個字符串用于說明你將要定向的文件或url.這個文件可以是jsp,程序段,或者其它能夠處理request對象的文件(如asp,cgi,php). <jsp:param name="parametername" value="{parametervalue | <%= expression %>}" />+ 向一個動態(tài)文件發(fā)送一個或多個參數(shù),這個文件一定是動態(tài)文件. 如果你想傳遞多個參數(shù),你可以在一個jsp文件中使用多個<jsp:param>。name指定參數(shù)名,value指定參數(shù)值. <jsp:forward>例子 <%@ page contentType="text/html;charset=gb2312" %> <html> <head> <title>test</title> </head> <body> <jsp:forward page="forwardTo.jsp"> <jsp:param name="userName" value="riso"/> </jsp:forward> </body> </html> forwardTo.jsp <%@ page contentType="text/html;charset=gb2312" %> <!--forwardTo.jsp--> <% String useName=request.getParameter("userName"); String outStr= "謝謝光臨!"; outStr+=useName; out.println(outStr); %> redirect的例子: 譬如:client 通過XXX\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");%>得不到。 |
|
來自: pursue2012 > 《我的圖書館》