1. ホーム
  2. java

[解決済み] web.xmlでデフォルトのエラーページを指定するには?

2022-05-13 18:19:48

質問

私は <error-page> 要素で web.xml で、コード 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認証の使用、ディレクトリリストの無効化、カスタムServletの使用、処理されない例外を投げる可能性のあるコードやすべてのメソッドが実装されていないような素のWebアプリケーションでは、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>

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