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

标签 tomcat servlets error-handling

我在 Tomcat 中提供了一个 Spring MVC 应用程序。当用户进入未找到的页面时,它会显示我的默认 404 页面,如 web.xml 中设置的那样

<error-page>
   <error-code>404</error-code>
   <location>/errors/404/</location>
</error-page>

问题是如果用户去 http://mydomain/bad/url

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

这很烦人,因为如果用户输入了错误的 URL,就很难看出错误所在并进行更正。

出现 404 错误后,我希望它保留原始 URL,但显示错误页面。 (即转发,而不是重定向)。这就是我对大多数 Web 服务器工作方式的印象。这可能吗?

最佳答案

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

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

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

但如果您要求 Tomcat 发送页面,它只会转发并保留原始状态的 URL,正如我正在寻找的那样。

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

关于tomcat - 如何使自定义 404 页面成为转发,而不是 Tomcat 中的重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963755/

相关文章:

sql-server - 从“邮件”选项卡SSMS捕获内容

tomcat - 使用嵌入式 Tomcat 7 在 Spring Boot 中启用 SSL - FileNotFoundException 和 o.a.coyote.http11.Http11NioProtocol 问题

Docker 和 Jenkins 的 Tomcat 数据源属性

java - JSP 与 Servlet 生成下拉列表

java - 在 NetBeans WebApp 中将库与 JNI 结合使用

java - 支柱 1 : Entry ActionForm inputs from any Action class

php - OpenCart故障 Uncaught Error : Class 'Controllerextensiontotalaffiliate'

java - MySql连接太多

java - windows 2000 server中tomcat应用映射域名

python - 在 Python 中处理闰年