インターフェース 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解決され解析された API バージョンを含むHttpServletRequest属性の名前。static final StringSE最も一致するパターンにマップされたハンドラーを含むHttpServletRequest属性の名前。static final StringSEハンドラーマッピング内で最も一致するパターンを含むHttpServletRequest属性の名前。static final StringSE型レベルのマッピングをインスペクションする必要があるかどうかを示すブール型HttpServletRequest属性の名前。static final StringSE使用すべきではありません。static final StringSEURI 変数名と、それぞれの URI マトリックス変数の対応する MultiValueMap を含むマップを含むHttpServletRequest属性の名前。static final StringSEパターンが一致する場合はハンドラーマッピング内のパス、それ以外の場合は完全な関連 URI (通常は DispatcherServlet のマッピング内) を含むHttpServletRequest属性の名前。static final StringSEマップされたハンドラーに適用可能な生成可能な MediaTypes のセットを含むHttpServletRequest属性の名前。static final StringSE変数名を値にマッピングする URI テンプレートマップを含むHttpServletRequest属性の名前。メソッドのサマリー
修飾子と型メソッド説明getHandler(jakarta.servlet.http.HttpServletRequest request) このリクエストのハンドラーとインターセプターを返します。default booleanこのHandlerMappingインスタンスが解析済みPathPatternの使用を有効にしているかどうか。この場合、DispatcherServletは自動的にRequestPathをparsesして、HandlerMapping、HandlerInterceptor、その他のコンポーネントのaccessで使用できるようにします。
フィールドの詳細
BEST_MATCHING_HANDLER_ATTRIBUTE
最も一致するパターンにマップされたハンドラーを含むHttpServletRequest属性の名前。- 導入:
- 4.3.21
LOOKUP_PATH
使用すべきではありません。UrlPathHelper.PATH_ATTRIBUTEとServletRequestPathUtils.PATH_ATTRIBUTEを優先します。リクエストマッピングに使用されるキャッシュされたパスにアクセスするには、ServletRequestPathUtils.getCachedPathValue(ServletRequest)を使用します。Name of theHttpServletRequestattribute that contains the path used to look up the matching handler, which depending on the configuredUrlPathHelpercould be the full path or without the context path, decoded or not, etc.- 導入:
- 5.2
PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE
パターンが一致する場合はハンドラーマッピング内のパス、それ以外の場合は完全な関連 URI (通常は DispatcherServlet のマッピング内) を含むHttpServletRequest属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。URL ベースの HandlerMappings は通常これをサポートしますが、ハンドラーはこのリクエスト属性がすべてのシナリオに存在することを必ずしも期待するべきではありません。
BEST_MATCHING_PATTERN_ATTRIBUTE
ハンドラーマッピング内で最も一致するパターンを含むHttpServletRequest属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。URL ベースの HandlerMappings は通常これをサポートしますが、ハンドラーはこのリクエスト属性がすべてのシナリオに存在することを必ずしも期待するべきではありません。
INTROSPECT_TYPE_LEVEL_MAPPING
型レベルのマッピングをインスペクションする必要があるかどうかを示すブール型HttpServletRequest属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。
URI_TEMPLATE_VARIABLES_ATTRIBUTE
変数名を値にマッピングする URI テンプレートマップを含むHttpServletRequest属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。URL ベースの HandlerMappings は通常これをサポートしますが、ハンドラーはこのリクエスト属性がすべてのシナリオに存在することを必ずしも期待するべきではありません。
MATRIX_VARIABLES_ATTRIBUTE
URI 変数名と、それぞれの URI マトリックス変数の対応する MultiValueMap を含むマップを含むHttpServletRequest属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はなく、HandlerMapping がマトリックス変数コンテンツを保持するように構成されているかどうかによっては存在しない場合もあります。
PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE
マップされたハンドラーに適用可能な生成可能な MediaTypes のセットを含むHttpServletRequest属性の名前。メモ: この属性は、すべての HandlerMapping 実装でサポートされる必要はありません。ハンドラーは、このリクエスト属性がすべてのシナリオに存在することを必ずしも期待する必要はありません。
API_VERSION_ATTRIBUTE
メソッドの詳細
usesPathPatterns
default boolean usesPathPatterns()このHandlerMappingインスタンスが解析済みPathPatternの使用を有効にしているかどうか。この場合、DispatcherServletは自動的にRequestPathをparsesして、HandlerMapping、HandlerInterceptor、その他のコンポーネントのaccessで使用できるようにします。- 導入:
- 5.3
getHandler
@Nullable HandlerExecutionChain getHandler(jakarta.servlet.http.HttpServletRequest request) throws ExceptionSE このリクエストのハンドラーとインターセプターを返します。選択は、リクエスト URL、セッション状態、実装クラスが選択する任意の要素で行うことができます。返された HandlerExecutionChain には、タグインターフェースではなくハンドラーオブジェクトが含まれているため、ハンドラーは一切制限されません。例: HandlerAdapter は、別のフレームワークのハンドラーオブジェクトを使用できるように記述できます。
一致が見つからなかった場合、
nullを返します。これはエラーではありません。DispatcherServlet は、登録されているすべての HandlerMapping Bean を照会して一致を検出し、ハンドラーが見つからない場合にのみエラーがあると判断します。- パラメーター:
request- 現在の HTTP リクエスト- 戻り値:
- ハンドラーオブジェクトとインターセプターを含む HandlerExecutionChain インスタンス、またはマッピングが見つからない場合は
null - 例外:
ExceptionSE- 内部エラーがある場合
UrlPathHelper.PATH_ATTRIBUTEとServletRequestPathUtils.PATH_ATTRIBUTEを優先します。