我正在使用 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/