2012-03-20 205 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)&返回到浏览器,然后转发到指定的页面。所以网址是变化的。

相关问题