インターフェース HandlerMapping
- すべての既知のサブインターフェース:
MatchableHandlerMapping
- すべての既知の実装クラス:
AbstractDetectingUrlHandlerMapping
、AbstractHandlerMapping
、AbstractHandlerMethodMapping
、AbstractUrlHandlerMapping
、BeanNameUrlHandlerMapping
、RequestMappingHandlerMapping
、RequestMappingInfoHandlerMapping
、RouterFunctionMapping
、SimpleUrlHandlerMapping
、WebSocketHandlerMapping
このクラスは、アプリケーション開発者が実装できますが、BeanNameUrlHandlerMapping
および RequestMappingHandlerMapping
はフレームワークに含まれているため、これは必須ではありません。HandlerMapping Bean がアプリケーションコンテキストに登録されていない場合、前者がデフォルトです。
HandlerMapping 実装は、マップされたインターセプターをサポートできますが、そうする必要はありません。ハンドラーは常に HandlerExecutionChain
インスタンスにラップされ、オプションでいくつかの HandlerInterceptor
インスタンスを伴います。DispatcherServlet は最初に各 HandlerInterceptor の preHandle
メソッドを指定された順序で呼び出し、すべての preHandle
メソッドが true
を返した場合、最後にハンドラー自体を呼び出します。
このマッピングをパラメーター化する機能は、この MVC フレームワークの強力で珍しい機能です。例: セッション状態、Cookie 状態、他の多くの変数に基づいてカスタムマッピングを記述することができます。他の MVC フレームワークは、同様に柔軟ではないようです。
メモ: 実装では、Ordered
インターフェースを実装して、ソート順を指定できるため、DispatcherServlet によって適用される優先順位を指定できます。順序付けされていないインスタンスは、最低の優先度として扱われます。
- 作成者:
- Rod Johnson, Juergen Hoeller
- 関連事項:
フィールドサマリー
修飾子と型フィールド説明static final StringSE
最も一致するパターンのマップされたハンドラーを含むHttpServletRequest
EE 属性の名前。static final StringSE
ハンドラーマッピング内で最も一致するパターンを含むHttpServletRequest
EE 属性の名前。static final StringSE
型レベルのマッピングをインスペクションするかどうかを示すブールHttpServletRequest
EE 属性の名前。static final StringSE
使用すべきではありません。static final StringSE
URI 変数名とそれぞれの URI マトリックス変数の対応する MultiValueMap を持つマップを含むHttpServletRequest
EE 属性の名前。static final StringSE
パターンマッチングの場合はハンドラーマッピング内のパスを含むHttpServletRequest
EE 属性の名前、または完全に関連する URI(通常は DispatcherServlet のマッピング内)else。static final StringSE
マップされたハンドラーに適用可能な作成可能な MediaTypes のセットを含むHttpServletRequest
EE 属性の名前。static final StringSE
URI テンプレートマップを含むHttpServletRequest
EE 属性の名前。変数名を値にマッピングします。メソッドのサマリー
修飾子と型メソッド説明getHandler
(HttpServletRequestEE request) このリクエストのハンドラーとインターセプターを返します。default boolean
このHandlerMapping
インスタンスが解析済みPathPattern
の使用を有効にしているかどうか。この場合、DispatcherServlet
は自動的にRequestPath
をparses
して、HandlerMapping
、HandlerInterceptor
、その他のコンポーネントのaccess
で使用できるようにします。
フィールドの詳細
BEST_MATCHING_HANDLER_ATTRIBUTE
最も一致するパターンのマップされたハンドラーを含むHttpServletRequest
EE 属性の名前。- 導入:
- 4.3.21
LOOKUP_PATH
使用すべきではありません。5.3 以降、UrlPathHelper.PATH_ATTRIBUTE
およびServletRequestPathUtils.PATH_ATTRIBUTE
が優先されます。リクエストのマッピングに使用されるキャッシュされたパスにアクセスするには、ServletRequestPathUtils.getCachedPathValue(ServletRequest)
を使用します。一致するハンドラーを検索するために使用されるパスを含むHttpServletRequest
EE 属性の名前。これは、構成されたUrlPathHelper
に応じて、完全なパスまたはコンテキストパスのない、デコードされたかどうかなどになります。- 導入:
- 5.2
PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
パターンマッチングの場合はハンドラーマッピング内のパスを含むHttpServletRequest
EE 属性の名前、または完全に関連する URI(通常は DispatcherServlet のマッピング内)else。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。URL ベースの HandlerMappings は通常これをサポートしますが、ハンドラーはこのリクエスト属性がすべてのシナリオに存在することを必ずしも期待するべきではありません。
BEST_MATCHING_PATTERN_ATTRIBUTE
ハンドラーマッピング内で最も一致するパターンを含むHttpServletRequest
EE 属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。URL ベースの HandlerMappings は通常これをサポートしますが、ハンドラーはこのリクエスト属性がすべてのシナリオに存在することを必ずしも期待するべきではありません。
INTROSPECT_TYPE_LEVEL_MAPPING
型レベルのマッピングをインスペクションするかどうかを示すブールHttpServletRequest
EE 属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。
URI_TEMPLATE_VARIABLES_ATTRIBUTE
URI テンプレートマップを含むHttpServletRequest
EE 属性の名前。変数名を値にマッピングします。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。URL ベースの HandlerMappings は通常これをサポートしますが、ハンドラーはこのリクエスト属性がすべてのシナリオに存在することを必ずしも期待するべきではありません。
MATRIX_VARIABLES_ATTRIBUTE
URI 変数名とそれぞれの URI マトリックス変数の対応する MultiValueMap を持つマップを含むHttpServletRequest
EE 属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はなく、HandlerMapping がマトリックス変数コンテンツを保持するように構成されているかどうかによっては存在しない場合もあります。
PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE
マップされたハンドラーに適用可能な作成可能な MediaTypes のセットを含むHttpServletRequest
EE 属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。ハンドラーは、このリクエスト属性がすべてのシナリオに存在することを必ずしも期待する必要はありません。
メソッドの詳細
usesPathPatterns
default boolean usesPathPatterns()このHandlerMapping
インスタンスが解析済みPathPattern
の使用を有効にしているかどうか。この場合、DispatcherServlet
は自動的にRequestPath
をparses
して、HandlerMapping
、HandlerInterceptor
、その他のコンポーネントのaccess
で使用できるようにします。- 導入:
- 5.3
getHandler
このリクエストのハンドラーとインターセプターを返します。選択は、リクエスト URL、セッション状態、実装クラスが選択する任意の要素で行うことができます。返された HandlerExecutionChain には、タグインターフェースではなくハンドラーオブジェクトが含まれているため、ハンドラーは一切制限されません。例: HandlerAdapter は、別のフレームワークのハンドラーオブジェクトを使用できるように記述できます。
一致が見つからなかった場合、
null
を返します。これはエラーではありません。DispatcherServlet は、登録されているすべての HandlerMapping Bean を照会して一致を検出し、ハンドラーが見つからない場合にのみエラーがあると判断します。- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- ハンドラーオブジェクトとインターセプターを含む HandlerExecutionChain インスタンス、またはマッピングが見つからない場合は
null
- 例外:
ExceptionSE
- 内部エラーがある場合
UrlPathHelper.PATH_ATTRIBUTE
およびServletRequestPathUtils.PATH_ATTRIBUTE
を推奨する 5.3 の時点で。