我正在运行一个具有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不是处理这个问题的最好方法,但对我来说却很有效。