web-dev-qa-db-ja.com

web.xmlでデフォルトのエラーページを指定するにはどうすればよいですか?

web.xml<error-page>要素を使用して、ユーザーが404のコードでエラーなどの特定のエラーに遭遇した場合にわかりやすいエラーページを指定しています。

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

ただし、<error-page>で指定されたエラーコードをユーザーが満たさない場合は、デフォルトのエラーページが表示されるようにする必要があります。 web.xmlの要素を使用してこれを行うにはどうすればよいですか?

130
ipkiss

Servlet 3.0以降では、単に指定できます

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

しかし、まだServlet 2.5を使用しているため、一般的なHTTPエラーをすべて個別に指定する以外に方法はありません。エンドユーザーが直面する可能性があるHTTPエラーを把握する必要があります。たとえば、HTTP認証の使用、ディレクトリリストの無効化、未処理の例外をスローしたり、すべてのメソッドが実装されていない可能性のあるカスタムサーブレットとコードを使用するベアボーンwebappでは、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>

それは最も一般的なものをカバーするはずです。

229
BalusC

次のようなこともできます。

<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が返されます。

21
Guy

また、<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>
7
Aniket Sahrawat