Как указать страницу ошибки по умолчанию в web.xml?
Я использую <error-page>
элемент в web.xml, чтобы указать дружественную страницу ошибки, когда пользователь сталкивается с определенной ошибкой, такой как ошибка с кодом 404:
<error-page>
<error-code>404</error-code>
<location>/Error404.html</location>
</error-page>
Тем не менее, я хочу, чтобы, если пользователь не встретил код ошибки, указанный в <error-page>
, он или она должен увидеть страницу ошибки по умолчанию. Как я могу сделать это, используя элемент в web.xml?
3 ответа
На 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>
Это должно охватывать наиболее распространенные из них.
Вы также можете сделать что-то подобное:
<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.
Вы также можете указать <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>