web.xmlで<error-page>
要素を使用して、ユーザーが404のコードでエラーなどの特定のエラーに遭遇した場合にわかりやすいエラーページを指定しています。
<error-page>
<error-code>404</error-code>
<location>/Error404.html</location>
</error-page>
ただし、<error-page>
で指定されたエラーコードをユーザーが満たさない場合は、デフォルトのエラーページが表示されるようにする必要があります。 web.xmlの要素を使用してこれを行うにはどうすればよいですか?
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>
それは最も一般的なものをカバーするはずです。
次のようなこともできます。
<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>