public abstract class AbstractHandlerExceptionResolver extends ObjectSE implements HandlerExceptionResolver, Ordered
HandlerExceptionResolver 実装の抽象基本クラス。 リゾルバーが適用されるマッピングされたハンドラーとハンドラークラスをサポートし、Ordered インターフェースを実装します。
| 修飾子と型 | フィールドと説明 |
|---|---|
protected Log | logger サブクラスで利用可能なロガー。 |
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| コンストラクターと説明 |
|---|
AbstractHandlerExceptionResolver() |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected StringSE | buildLogMessage(ExceptionSE ex, HttpServletRequestEE request) 特定のリクエストの処理中に発生した特定の例外のログメッセージを作成します。 |
protected abstract ModelAndView | doResolveException(HttpServletRequestEE request, HttpServletResponseEE response, ObjectSE handler, ExceptionSE ex) ハンドラーの実行中にスローされた特定の例外を実際に解決し、適切であれば特定のエラーページを表す ModelAndView を返します。 |
int | getOrder() このオブジェクトの順序値を取得します。 |
protected void | logException(ExceptionSE ex, HttpServletRequestEE request)"warnLogCategory" プロパティを介して警告ログが有効になっている場合、警告レベルで特定の例外をログに記録します。 |
protected void | prepareResponse(ExceptionSE ex, HttpServletResponseEE response) 例外的なケースの対応を準備します。 |
protected void | preventCaching(HttpServletResponseEE response) 対応する HTTP Cache-Control: no-store ヘッダーを設定することにより、レスポンスがキャッシュされないようにします。 |
ModelAndView | resolveException(HttpServletRequestEE request, HttpServletResponseEE response, ObjectSE handler, ExceptionSE ex) このリゾルバーが適用されることになっているかどうかを確認します(つまり |
void | setMappedHandlerClasses(ClassSE<?>... mappedHandlerClasses) この例外リゾルバーが適用されるクラスのセットを指定します。 |
void | setMappedHandlers(SetSE<?> mappedHandlers) この例外リゾルバーが適用されるハンドラーのセットを指定します。 |
void | setOrder(int order) |
void | setPreventResponseCaching(boolean preventResponseCaching) この例外リゾルバーによって解決されたビューの HTTP レスポンスキャッシュを防止するかどうかを指定します。 |
void | setWarnLogCategory(StringSE loggerName) 警告ログのログカテゴリを設定します。 |
protected boolean | shouldApplyTo(HttpServletRequestEE request, ObjectSE handler) このリゾルバーが特定のハンドラーに適用されることになっているかどうかを確認します。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEprotected final Log logger
public void setOrder(int order)
public int getOrder()
Ordered 値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup の値に多少似ています)。
同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
Ordered の getOrder Ordered.HIGHEST_PRECEDENCE, Ordered.LOWEST_PRECEDENCEpublic void setMappedHandlers(SetSE<?> mappedHandlers)
例外マッピングとデフォルトのエラービューは、指定されたハンドラーにのみ適用されます。
ハンドラーまたはハンドラークラスが設定されていない場合、例外マッピングとデフォルトのエラービューはすべてのハンドラーに適用されます。これは、指定されたデフォルトのエラービューがすべての例外のフォールバックとして使用されることを意味します。この場合、チェーン内のそれ以上の HandlerExceptionResolvers は無視されます。
public void setMappedHandlerClasses(ClassSE<?>... mappedHandlerClasses)
例外マッピングとデフォルトのエラービューは、指定された型のハンドラーにのみ適用されます。指定された型は、インターフェースまたはハンドラーのスーパークラスでもあります。
ハンドラーまたはハンドラークラスが設定されていない場合、例外マッピングとデフォルトのエラービューはすべてのハンドラーに適用されます。これは、指定されたデフォルトのエラービューがすべての例外のフォールバックとして使用されることを意味します。この場合、チェーン内のそれ以上の HandlerExceptionResolvers は無視されます。
public void setWarnLogCategory(StringSE loggerName)
null または空の文字列が渡されると、警告ログはオフになります。 デフォルトでは警告ロギングはありませんが、DefaultHandlerExceptionResolver などのサブクラスはそのデフォルトを変更できます。この設定を指定して、特定のカテゴリへの警告ログを有効にします。または、カスタムロギングの logException(java.lang.Exception, javax.servlet.http.HttpServletRequest) メソッドをオーバーライドします。
public void setPreventResponseCaching(boolean preventResponseCaching)
デフォルトは false です。レスポンスキャッシュを抑制する HTTP レスポンスヘッダーを自動的に生成するには、これを true に切り替えます。
@Nullable public ModelAndView resolveException(HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler, ExceptionSE ex)
doResolveException(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception) テンプレートメソッドに委譲します。HandlerExceptionResolver の resolveException request - 現在の HTTP リクエスト response - 現在の HTTP レスポンス handler - 実行されたハンドラー、または例外時に何も選択されなかった場合は null (たとえば、マルチパート解決が失敗した場合)ex - ハンドラーの実行中にスローされた例外 ModelAndView、または解決チェーンでのデフォルト処理の場合は null protected boolean shouldApplyTo(HttpServletRequestEE request, @Nullable ObjectSE handler)
request - 現在の HTTP リクエスト handler - 実行されたハンドラー、または例外時に何も選択されなかった場合は null (たとえば、マルチパート解決が失敗した場合)setMappedHandlers(java.util.Set<?>), setMappedHandlerClasses(java.lang.Class<?>...)protected void logException(ExceptionSE ex, HttpServletRequestEE request)
"warnLogCategory" プロパティを介して警告ログが有効になっている場合、警告レベルで特定の例外をログに記録します。 ログに記録する具体的なメッセージを判別するために、buildLogMessage(java.lang.Exception, javax.servlet.http.HttpServletRequest) を呼び出します。
ex - ハンドラーの実行中にスローされた例外 request - 現在の HTTP リクエスト (メタデータの取得に役立ちます)setWarnLogCategory(java.lang.String), buildLogMessage(java.lang.Exception, javax.servlet.http.HttpServletRequest), Log.warn(Object, Throwable)protected StringSE buildLogMessage(ExceptionSE ex, HttpServletRequestEE request)
ex - ハンドラーの実行中にスローされた例外 request - 現在の HTTP リクエスト (メタデータの取得に役立ちます)protected void prepareResponse(ExceptionSE ex, HttpServletResponseEE response)
"preventResponseCaching" プロパティが "true" に設定されている場合、デフォルトの実装ではレスポンスがキャッシュされません。
ex - ハンドラーの実行中にスローされた例外 response - 現在の HTTP レスポンス preventCaching(javax.servlet.http.HttpServletResponse)protected void preventCaching(HttpServletResponseEE response)
Cache-Control: no-store ヘッダーを設定することにより、レスポンスがキャッシュされないようにします。response - 現在の HTTP レスポンス @Nullable protected abstract ModelAndView doResolveException(HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler, ExceptionSE ex)
ModelAndView を返します。特定の例外チェックを適用するために、サブクラスでオーバーライドできます。このテンプレートメソッドは、この解決が適用されるかどうか ( "mappedHandlers" など) を確認した後に呼び出されるため、実装では実際の例外処理をそのまま続行できます。
request - 現在の HTTP リクエスト response - 現在の HTTP レスポンス handler - 実行されたハンドラー、または例外時に何も選択されなかった場合は null (たとえば、マルチパート解決が失敗した場合)ex - ハンドラーの実行中にスローされた例外 ModelAndView、または解決チェーンでのデフォルト処理の場合は null