这是一个小型的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
。
答案 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;然后转发到指定的(页面)。所以网址是变化的。