Как я могу использовать одну и ту же страницу ошибок для нескольких кодов ошибок в Tomcat? - PullRequest
4 голосов
/ 29 июня 2011

Я пытаюсь отправить сообщения об ошибках в виде простого текста из сервлета tomcat, чтобы приложение могло представить пользователю ответы.

В моем web.xml есть следующее:

<error-page>
    <error-code>409</error-code>
    <location>/string_error.jsp</location>
</error-page>

И string_error.jsp выглядит следующим образом:

${requestScope['javax.servlet.error.message']}

Это успешно дает мне текстовые сообщения об ошибках для ответа 409. Тем не менее, я хотел бы использовать эту же страницу для любой ошибки в диапазоне 400/500, без указания вручную нового блока <error-page> для каждого. Я бы предположил, что <error-code>*</error-code> достигнет этого, но это не так. Предоставляет ли Tomcat механизм для этого?

Ответы [ 2 ]

5 голосов
/ 29 июня 2011

Если вы используете контейнер Servlet 3.0, такой как Tomcat 7.0, то вы можете просто пропустить элемент <error-code> (или <exception-type>), чтобы сделать его глобальной страницей ошибок по умолчанию.

<error-page>
    <location>/string_error.jsp</location>
</error-page>

Начиная с Servlet 3.0, эти элементы являются необязательными.

Однако, если вы еще не используете Servlet 3.0, вам придется настроить его на уровне контейнера. Например, в Tomcat 6.0 (который является контейнером Servlet 2.5) вам необходимо создать пользовательский класс клапана отчета об ошибках. Затем вы можете указать его как атрибут errorReportValveClass элемента <Host> в файле /conf/server.xml.

По поводу других контейнеров обращайтесь к их документации.

1 голос
/ 29 июня 2011

Вы можете добавить error-page элементы либо error-code, либо (java) exception-type в Tomcat.Я не думаю, что это можно сделать общим, как вы предложили.

<error-page>
    <error-code>404</error-code>
    <location>/404error.html</location>
</error-page>

<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/someJavaException.html</location>
</error-page>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...