ソフトウェアはエラーを経験します。最高のアプリケーションでさえ、ある時点でエラーが発生します。したがって、すべてのアプリケーションには何らかのエラー処理メカニズムが必要です。
Spring Bootは、エラー処理の自動構成のコンポーネントとしてデフォルトのWhitelabelエラーページを提供します。それにもかかわらず、開発者はWhitelabelエラーページを置き換えるカスタムエラーページを作成することが期待されています。この記事では、Spring Bootアプリケーションのエラーページをカスタマイズする方法について説明します。
Spring BootのWhitelabelエラーページ
Spring Bootアプリケーションでエラーが発生すると、/errorURLが要求されます。この場所にビューがない場合、Whitelabelエラーページが表示されます:
Whitelabelエラーページには、エラーの日付と時刻とその対応するタイムゾーンが記載されています。さらに、エラーの種類とその関連するコードを示します。Whitelabelページは、これが404エラー(ページが見つかりません)であると述べています。これは、サンプルアプリケーションに「/products」URLのマッピングがないためです。
Whitelabelエラーページに表示される情報のほとんどは、特定のエラー属性から取得されます。Spring Bootのエラービューは、次のエラー属性にアクセスできます:
- error: エラーの理由。
- timestamp: エラーが発生した日付と時刻。
- status: エラーのステータスコード。
- exception: ルート例外のクラス名(エラーが例外の結果である場合)。
- message: 例外メッセージ(エラーが例外の結果である場合)。
- errors: BindingResult例外からの結果(エラーが例外の結果である場合)。
- trace: 例外のスタックトレース(エラーが例外の結果である場合)。
- path: エラーが発生したURLパス。
Thymeleafを使用したエラーページの作成
Spring Bootアプリケーションには、「error」テンプレート内に格納された単一のエラーページが必要です。このテンプレートの拡張子は、使用するテンプレート技術によって異なります。たとえば、Java Server Pages(JSP)テンプレートを選択した場合、ファイル名はerror.jspにする必要があります。
ただし、このサンプルのSpring Bootアプリケーションでは、Thymeleafテンプレートエンジンを使用しています。そのため、テンプレート名はerror.htmlです。エラーテンプレートは、他のすべてのテンプレートファイルと一緒にresourcesディレクトリにあるtemplateフォルダに一貫して配置する必要があります。
error.htmlファイル
ErrorAn error has occurred...There seems to be a problem with the page you requested().Back to home
カスタマイズされたエラーページは、いくつかの重要なタスクを実行します。エラーの発生を宣言します。その後、エラーをトリガーしたHTTPリクエストを紹介します。さらに、エラーに関連するステータスコードをユーザーに提供します。しかし、ユーザーがステータスコードに慣れていない場合、ページはエラー属性を通じてコードの意味も説明します。
テキストの最後の行は、例外が発生した場合にメッセージをユーザーに提示します。次に、最後にあるリンクを使用すると、ユーザーはホームページに戻ることができます。error.htmlファイルは、CSSスタイルシートと2つの画像を使用して、次のビューを作成します:
エラーページをユーザーフレンドリーに保つ
エラーページの主な目的は、ユーザーに特定のエラーが発生したことを通知することです。ただし、このエラーページは依然としてアプリケーションの一部です。したがって、エラーページがユーザーフレンドリーであることを確認することが重要です。
これは、エラーをより複雑な方法で伝達するエラー属性を使用することを選択することを意味します。したがって、ユーザーが知る必要のない詳細が含まれており、はるかに複雑なトレース属性ではなく、パス属性を使用することを選択する可能性があります。
また、アプリケーションの内部動作に関する過剰な情報をランダムなユーザーに提供したくない場合もあります。これは、アプリケーションのセキュリティを損なう可能性があるためです。
コメントする