轉發和重定向的區別(轉)
重定向:以前的request中存放的變數全部失效,並進入一個新的request作用域。
轉發:以前的request中存放的變數不會失效,就像把兩個頁面拼到了一起。[@more@]
正文開始:
先是看上去不同,他們的呼叫分別如下:
request.getRequestDispatcher("apage.jsp").forward(request, response);//轉發到apage.jsp
response.sendRedirect("apage.jsp");//重定向到apage.jsp
在jsp頁面中你也會看到透過下面的方式實現轉發:
我在初學jsp的時候,對這兩個概念非常模糊,看別人的例子的時候,也是一頭霧水,不知道什麼時候該用哪個。希望下面的解說能對你有所幫
助。
提到轉發和重定向就不得不提到request作用域。很多初學者都知道當我們提交一個表單時,就建立了一個新的請求。實際上,當我們點選一個
連結時,也建立了一個新的請求。那麼一個請求的作用於到底有多大呢?例如:
在頁面a.jsp中有一個連結這是指向b的一個連結,而且還帶了一個引數。當我們點選這個連線的時候,就產生了一
個請求,為了明確起見,我們把它叫做requestA->B。現在,在b.jsp頁面中我們就可以從這個請求中獲取資訊了。在b.jsp中你可以寫入out.pr
intln(request.getParameter("id"))進行測試。下面更復雜一點,我們在b.jsp頁面中增加下面的語句:
request.setAttribute("name","funcreal");
out.println(request.getAttriblute("name"));//成功顯示了name變數的值。
現在在b.jsp中再增加一個連結:這是指向c的一個連結,而且還帶了一個引數,當我們點選這個連線的時候,將
產生一個新的請求,這時requestA-B也就安息了,新的請求叫做requestB-C。同樣的道理,在c.jsp中,我們可以訪問到的變數只有age,因為i
d,name這兩個變數都屬於requestA-B,此時他已經不存在了。下面是原始碼:
a.jsp
指向b.jsp,而且還帶了一個引數id=1。requestA-B現在誕生了
b.jsp
out.println("id=" + request.getParameter("id"));
request.setAttribute("name","Func Real");
out.println("name=" + request.getAttribute("name"));
%>
requestA-B已經結束了。指向c.jsp,而且還帶了一個引數age=23
c.jsp
out.println("id=" + request.getParameter("id"));
out.println("name=" + request.getAttribute("name"));
out.println("age=" + request.getParameter("age"));
%>
那麼轉發又是怎麼回事呢?現在增加一個頁面叫做d.jsp,並且在c.jsp中
相關文章
- 轉發和重定向的區別?
- 轉發和重定向的過程和區別
- 轉發和重定向
- Springmvc中轉發和重定向SpringMVC
- Spring MVC 轉發和重定向SpringMVC
- Javaweb的轉發與重定向的區別以及解決重定向不能共享資料的問題JavaWeb
- servlet 轉發與重定向Servlet
- 【轉發與重定向(二)】
- 轉發和重定向又是什麼“垃圾”——教你再分類
- 請求轉發與URL重定向
- 【轉】理解 CI 和 CD 之間的區別
- Vue中computed和watch的區別(轉載)Vue
- input屬性disabled和readonly的區別(轉)
- [轉]重定向輸出
- String.valueOf和強制型別轉換(String)的區別型別
- 強制型別轉換(int)、(int&)和(int*)的區別型別
- 教你如何實現SpringCloud URL的重定向及轉發SpringGCCloud
- GO語言中string和[]byte的區別及轉換Go
- 塊元素和行內元素的區別與轉換
- URL重定向/跳轉漏洞
- VUE的兩種跳轉push和replace對比區別Vue
- APEX重定向頁跳轉1
- Java中HashMap,LinkedHashMap,TreeMap的區別[轉]JavaHashMap
- [轉帖]盤點selenium4和selenium3的區別
- [轉載] spring aop 環繞通知around和其他通知的區別Spring
- 【轉載】Maven中-DskipTests和-Dmaven.test.skip=true的區別Maven
- Gson轉換與JSONObject區別JSONObject
- jmeter學習指南之HTTP請求中自動重定向和跟隨重定向的區別JMeterHTTP
- [轉載] 整理下java中stringBuilder和stringBuffer兩個類的區別JavaUI
- XHTML?它與 HTML的區別?如何轉換HTML
- 路由和轉發路由
- CPU單核多核區別【轉載】單核
- SpringMVC---02---實現頁面的跳轉 轉向與重定向SpringMVC
- Windows 上使用 PowerShell 設定防火牆規則和埠轉發; Windows 上配置埠轉發,將 3389 埠的流量重定向到自定義埠;Windows防火牆
- mysql bigint型別和datetime型別的轉換MySql型別
- 影片直播原始碼,uniapp頁面跳轉的幾種方法和區別原始碼APP
- Shell重定向&>file、2>&1、1>&2的區別
- [轉帖]Dockerfile中CMD與ENTRYPOINT命令的區別Docker
- 轉載_Linux程式與執行緒的區別Linux執行緒