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 ?
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.
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.
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>
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