如何使自定义404页面成为转发,而不是Tomcat中的重定向

时间:2010-10-18 22:01:48

标签: tomcat servlets error-handling

我在Tomcat中提供了一个Spring MVC应用程序。当用户输入未找到的页面时,它将显示我在web.xml

中设置的默认404页面
<error-page>
   <error-code>404</error-code>
   <location>/errors/404/</location>
</error-page>

问题在于,如果用户去了 http://mydomain/bad/url

它被重定向到 http://mydomain/errors/404/

这很烦人,因为如果用户键入错误的网址,很难看出错误是什么并纠正错误。

404错误后,我希望保留原始网址,但会显示错误页面。 (即前进,而不是重定向)。这是我对大多数Web服务器如何工作的印象。这可能吗?

1 个答案:

答案 0 :(得分:4)

我不太明白为什么这样做会有效,但是......

我发现如果您设置状态代码并且响应为空(或者如果您尝试转发到错误页面),Tomcat将重定向到错误页面:

((HttpServletResponse) response).setStatus(HttpServletResponse.SC_NOT_FOUND);

但是如果你要求Tomcat发送页面,它就会转发并将URL保留为原始状态,正如我所寻找的那样。

((HttpServletResponse) response).setStatus(HttpServletResponse.SC_NOT_FOUND);
((HttpServletResponse) response).sendError(HttpServletResponse.SC_NOT_FOUND);