簡體   English   中英

為什么將請求轉發到另一個頁面時瀏覽器中的網址沒有更改?

[英]why the url in the browser doesn't change when the request is forwarded to another page?

這是一個小的jsp頁面:

<%@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仍然是http://localhost:8080/WebTesters/FooServlet

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

這與重定向不同,在重定向中,備用資源的URL作為標頭字段發送到客戶端,並且客戶端負責進行后續調用以檢索備用資源。

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

在請求分派器的情況下,請求不會返回到瀏覽器,而是直接從當前servlet(頁面)轉發到page(servlet)。 因此瀏覽器的URL不會改變。 在發送重定向的情況下,第一個請求是從當前頁面(servlet)返回瀏覽器,然后轉發到指定的(頁面)。 因此,網址已更改。

在sendRedirection中,請求url將被更改,例如:www.sun.com(對於Java)為我們提供了www.oracle.com。,但是在轉發或包含機制時,URL不顯示請求的資源。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM