Apache Tomcat上的自定义错误页面

我正在运行一个具有2个自定义servlet的Apache Tomcat服务器。 树结构看起来像:

$CATALINA_HOME/webapps/ ROOT/ WEB-INF/ servlet1/ META-INF/ WEB-INF/ servlet2/ META-INF/ WEB-INF/ 

我正在尝试为错误400,404上显示的每个servlet添加一个自定义错误的html页面,并且在servlet上有一个exception(例如应该发送给http请求上的servlet的信息是不在那里)

我添加到$CATALINA_HOME/webapps/servlet1/WEB-INF/web.xml

  <error-page> <error-code>400</error-code> <location>/error.html</location> </error-page> <error-page> <error-code>404</error-code> <location>/error.html</location> </error-page> <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.html</location> </error-page> 

我在$CATALINA_HOME/webapps/ROOT/创build了error.html 。 这似乎并没有工作。 当我键入“ www.server.com/servlet1/SomRandomStuff获得一个404,显示一个空白页面,而不是error.html。当我调用servlet没有传递正确的信息时,会发生其他事情,浏览器会问我如果我想下载一个文件。
我已经尝试将error.html放在ROOT上,但放在servlet1目录下。 没有工作。 我检查了error.html有正确的权限,这是OK的。 我出来的想法,我在网上find的几个教程是非常模糊的。

我究竟做错了什么? 我如何做到这一点 – 显示每个servlet的自定义错误页面?

感谢您的帮助。

您的页面path以斜线开头:

  <error-page> <error-code>400</error-code> <location>**/error.html**</location> </error-page> <error-page> <error-code>404</error-code> <location>**/error.html**</location> </error-page> <error-page> <exception-type>java.lang.Throwable</exception-type> <location>**/error.html**</location> </error-page> 

在这种情况下,它可能会在驱动器的根目录中查找它们。

如果它们与web.xml位于同一文件夹中,则可以通过这种方式尝试./error.html

除此之外,我会build议尝试文件的完整path: /var/www/error/error.html或任何您的情况是。

www.server.com/servlet1/SomRandomStuff捕获404将你的error.html文件移动到$CATALINA_HOME/webapps/servlet1/error.html 。 将错误文件复制到每个webapp。 尽pipe不是处理这个问题的最好方法,但对我来说却很有效。