2012-03-20 39 views
1

這是一個小的jsp頁面:爲什麼當請求被轉發到另一個頁面時,瀏覽器中的url不會改變?

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<%@page errorPage="errorpage.jsp" %> 
<html tags> 
<%-- about to be bad ! --%> 
<% int x = 10/0; %> 
</html tags> 

上述頁面接收來自一個名爲FooServlet Servlet請求(其工作只是調用上面的JSP頁面)。只要servlet啓動,我就會看到默認的錯誤頁面。但瀏覽器中的url與servlet的url相同。爲什麼這樣?像錯誤頁面的url仍然是http://localhost:8080/WebTesters/FooServlet

回答

4

因爲這是請求轉發如何工作的規範的一部分。轉發通過服務器將請求路由到備用資源,該服務器充當客戶端和備用資源之間的代理。

這不同於重定向,其中替代資源的URL作爲頭字段發送給客戶端,客戶端負責進行後續調用以檢索替代資源。

1

因爲這是請求轉發而不是請求重定向。新請求只能在請求重定向中進行。

0

在sendRedirection中,請求url將被改變,例如:www.sun.com(對於java)給了我們www.oracle.com.but在轉發或包含機制時,url不顯示請求的資源。

原因是轉發/包含發生時,請求的資源在Web容器內。

0

如果請求調度程序請求沒有返回到瀏覽器&它直接從當前servlet(頁面)轉發到頁面(servlet)。所以瀏覽器的網址不會改變。 雖然發送重定向的第一個請求從當前頁面(servlet)&返回到瀏覽器,然後轉發到指定的頁面。所以網址是變化的。

相關問題