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 boolean | hasHandlerMappings() setMappedHandlers(Set) または setMappedHandlerClasses(Class[]) を介して登録されたハンドラーマッピングがあるかどうか。 |
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, waitSE
protected final Log logger
public void setOrder(int order)
public int getOrder()
Ordered
値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup
の値に多少似ています)。
同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
Ordered
の getOrder
Ordered.HIGHEST_PRECEDENCE
, Ordered.LOWEST_PRECEDENCE
public 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 boolean hasHandlerMappings()
setMappedHandlers(Set)
または setMappedHandlerClasses(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