当请求转发到另一个页面时,为什么浏览器中的URL不会更改?

时间:2012-03-20 10:58:00

标签: java jsp java-ee servlets

这是一个小型的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

4 个答案:

答案 0 :(得分:4)

因为这是请求转发如何工作的规范的一部分。转发通过服务器将请求路由到备用资源,服务器充当客户端和备用资源之间的代理。

这与重定向不同,其中备用资源的URL作为标题字段发送到客户端,客户端负责进行后续调用以检索备用资源。

答案 1 :(得分:1)

因为这是请求转发而不是请求重定向。新请求仅在请求重定向中进行。

答案 2 :(得分:0)

在sendRedirection中,请求URL将被更改,例如:www.sun.com(对于java)给我们www.oracle.com.but在转发或包含机制时,url不显示所请求的资源。

原因是当转发/包含发生时,请求的资源在Web容器中。

答案 3 :(得分:0)

如果请求调度程序请求未返回浏览器&amp;它从当前的servlet(页面)直接转发到页面(servlet)。所以浏览器网址没有变化。          在发送重定向的情况下,第一个请求从当前页面(servlet)返回到浏览器&amp;然后转发到指定的(页面)。所以网址是变化的。