[英]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.