Jak określić domyślną stronę błędu w web.xml?

Używam <error-page> elementu w web.xml aby określić przyjazną stronę błędu, gdy Użytkownik napotka określony błąd, taki jak błąd z kodem 404:

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

Chcę jednak, aby Jeśli Użytkownik nie spełnia żadnego kodu błędu określonego w <error-page>, powinien zobaczyć domyślną stronę błędu. Jak mogę to zrobić używając elementu w web.xml ?

Author: Community, 2011-08-15

3 answers

Na Serwlecie 3.0 lub nowszym można po prostu podać

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

Ale ponieważ nadal jesteś na Serwlecie 2.5, nie ma innego sposobu niż określenie każdego wspólnego błędu HTTP indywidualnie. Musisz dowiedzieć się, z którymi błędami HTTP może napotkać użytkownik końcowy. Na barebones webapp z na przykład wykorzystaniem uwierzytelniania HTTP, o wyłączonej liście katalogów, za pomocą niestandardowych serwletów i kodu, który może ewentualnie rzucać nieobsługiwane wyjątki lub nie ma wszystkich metod zaimplementowanych, a następnie chcesz aby ustawić go dla błędów HTTP odpowiednio 401, 403, 500 i 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>

To powinno obejmować te najczęściej spotykane.

 217
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-18 16:50:29

Możesz też zrobić coś takiego:

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

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

Dla kodu błędu 403 zwróci stronę 403.html, a dla każdego innego kodu błędu zwróci błąd strony.html.

 19
Author: Guy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-08 06:27:28

Możesz również określić <error-page> dla WYJĄTKÓW za pomocą <exception-type>, np. poniżej:

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

Lub odwzorować kod błędu za pomocą <error-code>:

<error-page>
    <error-code>404</error-code>
    <location>/errorpages/404error.html</location>
</error-page>
 3
Author: Aniket Sahrawat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-19 08:26:37