Я запускаю сервер Apache Tomcat с двумя настраиваемыми сервлетами. Древовидная структура выглядит так:
$CATALINA_HOME/webapps/
ROOT/
WEB-INF/
servlet1/
META-INF/
WEB-INF/
servlet2/
META-INF/
WEB-INF/
Я пытаюсь добавить настраиваемую страницу html с ошибкой для каждого сервлета, который будет отображаться при ошибке 400, 404 и при возникновении исключения на сервлете (например, информация, которая должна была быть отправлена сервлету в HTTP-запросе, не там)
Я добавил к $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>
и я создал error.html
в $CATALINA_HOME/webapps/ROOT/
. Кажется, это не работает. Когда я печатаю " www.server.com/servlet1/SomRandomStuff
чтобы получить 404, отображается пустая страница, а не error.html. Что-то еще происходит, когда я вызываю сервлет, не передавая ему правильную информацию, браузер спросит меня, хочу ли я загрузить файл.
Я пробовал разместить error.html
не на ROOT
но в каталоге servlet1. Не сработало. Я проверил это error.html
имеет правильные разрешения, все в порядке. У меня нет идей, и несколько руководств, которые я нашел в Интернете, очень расплывчаты.
Что я делаю не так? Как мне добиться этого - отображать настраиваемую страницу ошибок для каждого сервлета?
Спасибо вам за помощь.
Пути к страницам начинаются с косой черты:
<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
Помимо этого, я бы рекомендовал попробовать полный путь к файлу: /var/www/error/error.html
или какова ваша ситуация.
захватить 404 для www.server.com/servlet1/SomRandomStuff
переместите файл error.html в $CATALINA_HOME/webapps/servlet1/error.html
. скопируйте файл с ошибкой в каждое из своих веб-приложений. Несмотря на то, что это не лучший способ справиться с этим, у меня это сработало.
Ваш файл с ошибкой должен находиться в этом каталоге (не в корне):
$CATALINA_HOME/webapps/servlet1