tomcat - 如何将 servlet 响应发送到 web.xml 配置的错误页面

标签 tomcat servlets custom-error-pages

我正在使用 Tomcat。我定义了一些<error-page>web.xml并映射404页面错误 /error/error.jsp 。我需要检测资源是否存在,如果资源不可用,则将响应状态设置为404。

response.setStatus(404);

但是Tomcat并没有重定向到我定义的404页面,所以我的问题是,是否有任何API可以获取web.xml中定义的页面位置?我不想解析 web.xml我自己。

最佳答案

只需使用 HttpServletResponse#sendError()status code 。例如

File resource = new File(path, name);
if (!resource.exists()) {
    response.sendError(HttpServletResponse.SC_NOT_FOUND); // Sends 404.
    return;
}

然后 servlet 容器将显示合适的错误页面。

注意:return 语句不是用于装饰的。它将避免同一方法 block 中的剩余代码继续运行并可能在应用服务器日志中产生 IllegalStateException!初学者通常认为像 sendRedirect()forward()sendError() 等方法在调用时会以某种方式自动退出方法 block 。因此,这是真实的;)

关于tomcat - 如何将 servlet 响应发送到 web.xml 配置的错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2047367/

相关文章:

java - 从 tomcat webapps 文件夹中读取属性文件

tomcat startup.sh 找不到 JAVA_HOME

Eclipse STS 连接 Tomcat

Symfony2 : Custom Error Page Extend base. html.twig

.htaccess - 重定向 404 错误 htaccess 后重写 URL

java - 为 JSF 应用程序指定外部错误页面

java - 如何在 JSP 错误处理程序中设置 HTTP 状态代码

java - 使用java刷新文件系统

java - Tomcat 默认 servlet (/) 丢失 css

html - 如何从 HTML 表单调用 servlet 类