本文目錄一覽:
JSP如何實現網頁重定向
重定向和轉發有一個重要的不同:當使用轉發時,JSP容器將使用一個內部的方法來調用目標頁面,新的頁面繼續處理同一個請求,而瀏覽器將不會知道這個過程。與之相反,重定向方式的含義是第一個頁面通知瀏覽器發送一個新的頁面請求。因為,當你使用重定向時,瀏覽器中所顯示的URL會變成新頁面的URL 而當使用轉發時,該URL會保持不變。重定向的速度比轉發慢,因為瀏覽仆飯得發出一個新的請求。同時,由於重定向方式產生了一個新的請求,所以經過一次重定向後,request內的對象將無法使用。轉發和重定向的區別不要僅僅為了把變數傳到下一個頁面而使用session作用域,那會無故增大變數的作用域,轉發也許可以幫助你解決這個問題。重定向:以前的request中存放的變數全部失效,並進入一個新的request作用域。轉發:以前的request中存放的變數不會失效,就像把兩個頁面拼到了一起。正文開始:先是看上去不同,他們的調用分別如下:request.getRequestDispatcher(“apage.jsp”).forward(request response);//轉發到apage.jspresponse.sendRedirect(“apage.jsp”);//重定向到apage.jsp在jsp頁面中你也會看到通過下面的方式實現轉發:提到轉發和重定向就不得不提到request作用域。很多初學者都知道當我們提交一個表單時,就創建了一個新的請求。實際上,當我們點擊一個鏈接時,也創建了一個新的請求。那麼一個請求的作用於到底有多大呢?例如:在頁面a.jsp中有一個鏈接這是指向b的一個鏈接,而且還帶了一個參數。當我們點擊這個連接的時候,就產生了一個請求,為了明確起見,我們把它叫做requestA-B。現在,在b.jsp頁面中我們就可以從這個請求中獲取信息了。在b.jsp中你可以寫入out.println(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,因為id,name這兩個變數都屬於requestA-B,此時他已經不存在了。下面是源代碼:a.jsp指向b.jsp,而且還帶了一個參數id=1。requestA-B現在誕生了b.jsprequestA-B已經結束了。指向c.jsp,而且還帶了一個參數age=23c.jspd.jsprequestB-C的魔爪已經伸到了d.jsp頁面運行程序,你會發現c頁面中的內容沒有顯示出來,因為forward是自動執行的,地址欄中雖然是c.jsp但實際上,但瀏覽器中顯示的已經是d.jsp的內容了,而且看到了從b.jsp傳過來的參數。你可以簡單得這樣理解:轉發,就是延長了requestB-C的作用域,,這一句話實際上是把c.jsp和d.jsp粘到了一起,他們就像是在一個頁面中。
怎樣進行網頁重定向
網頁重定向就是將用戶請求的網頁轉向其它位置。即當用戶訪問某個網頁A時,網頁A自動定向到網頁B,這樣用戶實際看到的就是網頁B了。
網頁重定向在網站開發中經常使用,如:
1) 公司的域名進行了變更,為了用戶也能通過原有域名進行訪問,就得使用重定向。常見的購物網站,好多都進行了域名變更,但原域名仍保留,輸入原域名後,自動定向到新的域名。
2) 在用戶登錄頁面A中,輸入完用戶名密碼後,點擊登錄時,表單提交到驗證網頁B,在服務端進行驗證通過後,會自動定向到用戶信息網頁C。
下面介紹幾種網頁重定向的幾種常用方法。
通過javascript腳本進行重定向
1
將a.html提交到b.html,b.html重定向到c.html。
(a.html相當於用戶登錄網頁,b.html相當於驗證用戶信息網頁,c.html相當於重定向的網頁)
這裡演示的僅是重定向的功能,因此代碼儘可能簡單。
a.html內容如下:
html
head
metahttp-equiv=”Content-Type” content=”text/html;charset=utf-8″ /
/head
body
form action=”b.html”method=”post”
input name = “submit”type=”submit” value=”提交”
/form
/body
/html
預覽圖如下:
2
b.html內容如下:
html
head
metahttp-equiv=”Content-Type” content=”text/html;charset=utf-8″ /
scripttype=”text/javascript”
function load()
{
window.location =”c.html”;
}
/script
/head
body onload = “load()”
驗證通過,現在進入用戶信息頁面。
/body
/html
3
c.html內容如下:
html
head
metahttp-equiv=”Content-Type” content=”text/html;charset=utf-8″ /
/head
body
歡迎光臨!
/body
/html
預覽圖如下:
4
重點在b.html,重定向的代碼就在其中的javascript腳本load()函數中。在b網頁載入完畢後,會調用此函數,此函數的重定向代碼就一句:
window.location = “c.html”;
怎麼樣?是不是很簡單。
如果想定向前其它網頁,如百度首頁,可以這麼寫:
window.location=」」;
注意「http://」不能少。
END
通過php代碼進行重定向
1
因為涉及到php代碼的執行,因此需要先做一個網站,這裡假定網站已做好。
a.html中的代碼很簡單,只需將上面的form中的action改為指定b.php而不是b.html即可。
b.php的代碼如下:
?phpheader(“Location:c.html”); ?
要在本地網站進行演示,可以將a.html、b.php、c.html拷貝到你的網站目錄下,在瀏覽器地址欄中輸入: localhost/a.html進行操作。
END
通過asp.net代碼進行重定向
1
代碼和php類似,因要先做一個支持asp.net運行的網站,將a.html中的action指定b.aspx,b.aspx中的代碼如下:
% Server.Transfer(“c.html”); %
END
通過jsp代碼進行重定向
代碼和php類似,因要先做一個支持jsp運行的網站,重定向代碼如下:
jsp:forward page=”c.html”
JSP如何實現網頁重定向?
jsp實現頁面的重定向,使用的是response.sendRedirect(“a.jsp”);實現頁面重定向到a.jsp這個頁面。
分為兩種寫法:
1、如果實在jsp頁面中寫代碼的話,將response.sendRedirect(“a.jsp”);放在%%裡面就行了,即:%response.sendRedirect(“a.jsp”);%
2、如果是在java文件(如servlet)中寫代碼的話,只需寫response.sendRedirect(“a.jsp”);就行了。
接下來簡單說說頁面的轉發(forward)與重定向(sendRedirect)的區別:
重定向:以前的request中存放的變數全部失效,並進入一個新的request作用域。
轉發:以前的request中存放的變數不會失效,就像把兩個頁面拼到了一起。
原創文章,作者:FZPFT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/324458.html