Как указать страницу ошибки по умолчанию в web.xml? - PullRequest
130 голосов
/ 15 августа 2011

Я использую элемент <error-page> в web.xml , чтобы указать дружественную страницу ошибок, когда пользователь сталкивается с определенной ошибкой, такой как ошибка с кодом 404:

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

Однако я хочу, чтобы, если пользователь не встретил код ошибки, указанный в <error-page>, он или она должен увидеть страницу ошибки по умолчанию. Как я могу сделать это, используя элемент в web.xml ?

Ответы [ 3 ]

230 голосов
/ 15 августа 2011

В Servlet 3.0 или новее вы можете просто указать

<web-app ...>
    <error-page>
        <location>/general-error.html</location>
    </error-page>
</web-app>

Но поскольку вы все еще используете Servlet 2.5, нет другого способа, кроме индивидуальной настройки каждой распространенной ошибки HTTP.Вам необходимо выяснить, с какими HTTP-ошибками может столкнуться конечный пользователь.В простом веб-приложении, например, с использованием HTTP-аутентификации, с отключенным списком каталогов, с использованием пользовательских сервлетов и кода, который может генерировать необработанные исключения или не имеет всех реализованных методов, вы можете установить его для ошибок HTTP 401, 403, 500 и 503. соответственно.

<error-page>
    <!-- Missing login -->
    <error-code>401</error-code>
    <location>/general-error.html</location>
</error-page>
<error-page>
    <!-- Forbidden directory listing -->
    <error-code>403</error-code>
    <location>/general-error.html</location>
</error-page>
<error-page>
    <!-- Missing resource -->
    <error-code>404</error-code>
    <location>/Error404.html</location>
</error-page>
<error-page>
    <!-- Uncaught exception -->
    <error-code>500</error-code>
    <location>/general-error.html</location>
</error-page>
<error-page>
    <!-- Unsupported servlet method -->
    <error-code>503</error-code>
    <location>/general-error.html</location>
</error-page>

Это должно охватывать наиболее распространенные из них.

21 голосов
/ 08 июля 2015

Вы также можете сделать что-то подобное:

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

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

Для кода ошибки 403 возвращается страница 403.html, а для любого другого кода ошибки - страница error.html.

7 голосов
/ 19 февраля 2018

Вы также можете указать <error-page> для исключений, используя <exception-type>, например, ниже:

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/errorpages/exception.html</location>
</error-page>

Или сопоставьте код ошибки, используя <error-code>:

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