頁面跳轉的兩種方式,重定向和轉發,實例表達啥叫重定向數據丟失了,轉發還在

頁面跳轉:

**重定向:**通過 重定向(Redirect)就是通過各種方法將各種網絡請求重新定個方向轉到其它位置(如:網頁重定向、域名的重定向、路由選擇的變化也是對數據報文經由路徑的一種重定向)。

實現原理:客戶端瀏覽器發送http請求,web服務器接收請求後發送302狀態碼響應及對應新的location給客戶端客戶端發現是302請求,則自動再發送一個新的http請求,請求url是新的location,服務器根據此請求併發給客戶,在這裏的location可以定義到任意的url,既然是瀏覽器重新發送了請求,則就沒有什麼request傳遞的概念了,在客戶端瀏覽器的路徑欄顯示的是其重定向的路徑,客戶端可以觀察到路徑的變化。

特點:

–是客戶端的行爲

–是瀏覽器至少做了兩次訪問請求的

–瀏覽器的地址發生改變

–兩次跳轉之間的傳輸的數據丟失(request範圍)

也就是無法從重定向後的頁面獲取到表單的數值

–可以重定向到任意的url

轉發

原理:

特點:

–是服務器行爲

–只對瀏覽器進行一次訪問

–瀏覽器的地址欄不變

–兩次跳轉之間傳遞的信息不會丟失

可以從轉發後的頁面獲取到表單的信息

2,3,·····n次轉發也能獲取到表單的信息

測試代碼:

send.jsp

<body>
<form action="receive.jsp" method="post">
姓名:<input type="text" name="username"><br/>
<input type="radio" name="radio" value="chongdingxiang">重定向<br/> 
<input type="radio" name="radio" value="zhuanfa">轉發<br/> 
<input type="submit" value="提交"> 
</form>
</body>

receive.jsp

<body>
<%
String username=request.getParameter("username");
String radio=request.getParameter("radio");
System.out.println(username);
if(radio.equals("chongdingxiang")){
	response.sendRedirect("chongdingxiang.jsp");
}else{
	request.getRequestDispatcher("zhuanfa.jsp").forward(request, response);
}
%>
</body>

chongdingxiang.jsp

<body>
重定向的結果
<% String username=request.getParameter("username"); %>
username:<%=username %>
</body>

zhuanfa.jsp

<body>
轉發的結果:
<% String username=request.getParameter("username"); %>
username:<%=username %>
</body>

輸入
在這裏插入圖片描述
輸出:重定向
在這裏插入圖片描述輸出:轉發
在這裏插入圖片描述

路徑問題:

絕對路徑:在不同網站之間的跳轉,比如:http://www/baidu.com/aaa/1.jpg

相對路徑:用在同一個網站中,aaa/1,jpg

根路徑:根指定就是服務器/day12web1/loginservlet 若在瀏覽器中使用/表示http://localhost:8080/

/如果是在服務器中使用的話表示,/day12web1 “”/“表示我的項目”

發佈了17 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章