クラス UrlPathHelper
RequestDispatcher
インクルードの URL パスのサポートと、一貫した URL デコードのサポートを提供します。AbstractUrlHandlerMapping
および RequestContext
で、パスのマッチングや URI の決定に使用されます。
- 導入:
- 14.01.2004
- 作成者:
- Juergen Hoeller, Rob Harrop, Rossen Stoyanchev
- 関連事項:
フィールドサマリー
修飾子と型フィールド説明static final UrlPathHelper
デフォルトの共有読み取り専用インスタンス。static final StringSE
resolved
lookupPath を保持するサーブレットリクエスト属性の名前。static final UrlPathHelper
エンコードされた完全なパスの共有された読み取り専用インスタンス。コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明decodeMatrixVariables
(HttpServletRequestEE request, MultiValueMap<StringSE, StringSE> vars) setUrlDecode(boolean)
がtrue
に設定されていない限り、指定されたマトリックス変数をdecodeRequestString(jakarta.servlet.http.HttpServletRequest, java.lang.String)
を介してデコードします。この場合、変数の抽出元の URL パスはgetLookupPathForRequest(HttpServletRequest)
の呼び出しによってすでにデコードされていると見なされます。decodePathVariables
(HttpServletRequestEE request, MapSE<StringSE, StringSE> vars) setUrlDecode(boolean)
がtrue
に設定されていない限り、指定された URI パス変数をdecodeRequestString(jakarta.servlet.http.HttpServletRequest, java.lang.String)
を介してデコードします。この場合、変数の抽出元の URL パスはgetLookupPathForRequest(HttpServletRequest)
の呼び出しによってすでにデコードされていると見なされます。decodeRequestString
(HttpServletRequestEE request, StringSE source) 指定されたソース文字列を URLDecoder でデコードします。protected StringSE
determineEncoding
(HttpServletRequestEE request) 指定されたリクエストのエンコーディングを決定します。getContextPath
(HttpServletRequestEE request) RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのコンテキストパスを返します。protected StringSE
URL のデコードに使用するデフォルトの文字エンコーディングを返します。該当する場合は現在のサーブレットマッピング内、そうでない場合は Web アプリケーション内で、指定されたリクエストのマッピングルックアップパスを返します。getLookupPathForRequest
(HttpServletRequestEE request, StringSE name) 使用すべきではありません。RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのコンテキストパスを返します。指定されたリクエストの URL のクエリ文字列部分を返します。指定されたリクエストのリクエスト URI を返します。RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのサーブレットパスを返します。指定されたリクエストの Web アプリケーション内のパスを返します。指定されたリクエストのサーブレットマッピング内のパスを返します。protected StringSE
getPathWithinServletMapping
(HttpServletRequestEE request, StringSE pathWithinApp) 指定されたリクエストのサーブレットマッピング内のパスを返します。getRequestUri
(HttpServletRequestEE request) 指定されたリクエストのリクエスト URI を返します。RequestDispatcher インクルード内で呼び出された場合、インクルードリクエスト URL を検出します。static StringSE
getResolvedLookupPath
(ServletRequestEE request) 以前のresolved
lookupPath を返します。getServletPath
(HttpServletRequestEE request) RequestDispatcher インクルード内で呼び出された場合、インクルードリクエスト URL に関して、指定されたリクエストのサーブレットパスを返します。boolean
ルックアップパスを決定するときにリクエスト URI をデコードするかどうか。removeSemicolonContent
(StringSE requestUri) removeSemicolonContent プロパティが "true" に設定されている場合、指定されたリクエスト URI から ";" (セミコロン) コンテンツを削除します。lookupPath をResolve
し、キーPATH_ATTRIBUTE
を使用してリクエスト属性にキャッシュし、その後getResolvedLookupPath(ServletRequest)
経由でアクセスできるようにします。void
setAlwaysUseFullPath
(boolean alwaysUseFullPath) URL ルックアップが常に現在の Web アプリケーションコンテキスト内の絶対パスを使用するかどうか、つまりvoid
setDefaultEncoding
(StringSE defaultEncoding) URL デコードに使用するデフォルトの文字エンコードを設定します。void
setRemoveSemicolonContent
(boolean removeSemicolonContent) ";" の場合に設定(セミコロン)コンテンツはリクエスト URI から削除する必要があります。void
setUrlDecode
(boolean urlDecode) コンテキストパスとリクエスト URI をデコードする必要があるかどうか。どちらも、サーブレットパスとは対照的に、サーブレット API によってデコードされずに返されます。boolean
";" を削除するように設定されているかどうか(セミコロン)リクエスト URI のコンテンツ。
フィールドの詳細
PATH_ATTRIBUTE
resolved
lookupPath を保持するサーブレットリクエスト属性の名前。- 導入:
- 5.3
defaultInstance
デフォルトの共有読み取り専用インスタンス。以下が適用されます。alwaysUseFullPath=false
urlDecode=true
removeSemicolon=true
defaultEncoding=
WebUtils.DEFAULT_CHARACTER_ENCODING
rawPathInstance
エンコードされた完全なパスの共有された読み取り専用インスタンス。以下が適用されます。alwaysUseFullPath=true
urlDecode=false
removeSemicolon=false
defaultEncoding=
WebUtils.DEFAULT_CHARACTER_ENCODING
コンストラクターの詳細
UrlPathHelper
public UrlPathHelper()
メソッドの詳細
setAlwaysUseFullPath
public void setAlwaysUseFullPath(boolean alwaysUseFullPath) URL ルックアップが常に現在の Web アプリケーションコンテキスト内、つまりServletContext.getContextPath()
EE 内の絶対パスを使用するかどうか。false に設定すると、該当する場合は、代わりに現在のサーブレットマッピング内のパスが使用されます(つまり、"/myServlet/*" などのプレフィックスベースのサーブレットマッピングの場合)。
デフォルトでは、これは "false" に設定されています。
setUrlDecode
public void setUrlDecode(boolean urlDecode) コンテキストパスとリクエスト URI をデコードする必要があるかどうか。どちらも、サーブレットパスとは対照的に、サーブレット API によってデコードされずに返されます。"true" に設定すると、リクエストエンコーディングまたはデフォルトのサーブレット仕様エンコーディング(ISO-8859-1)のいずれかが使用されます。
デフォルトでは true に設定されています。
注意 : エンコードされたパスと比較すると、サーブレットのパスが一致しないことに注意してください。
urlDecode=false
の使用は、接頭辞ベースのサーブレットマッピングと互換性がなく、同様にalwaysUseFullPath=true
の設定も意味します。isUrlDecode
public boolean isUrlDecode()ルックアップパスを決定するときにリクエスト URI をデコードするかどうか。- 導入:
- 4.3.13
setRemoveSemicolonContent
public void setRemoveSemicolonContent(boolean removeSemicolonContent) ";" の場合に設定(セミコロン)コンテンツはリクエスト URI から削除する必要があります。デフォルトは「true」。
shouldRemoveSemicolonContent
public boolean shouldRemoveSemicolonContent()";" を削除するように設定されているかどうか(セミコロン)リクエスト URI のコンテンツ。setDefaultEncoding
URL デコードに使用するデフォルトの文字エンコードを設定します。サーブレット仕様によると、デフォルトは ISO-8859-1 です。リクエスト自体が文字エンコーディングを指定している場合、リクエストのエンコーディングはこの設定をオーバーライドします。これにより、
ServletRequest.setCharacterEncoding
メソッドを呼び出すフィルターの文字エンコードを一般的にオーバーライドすることもできます。- パラメーター:
defaultEncoding
- 使用する文字エンコーディング- 関連事項:
getDefaultEncoding
URL のデコードに使用するデフォルトの文字エンコーディングを返します。resolveAndCacheLookupPath
lookupPath をResolve
し、キーPATH_ATTRIBUTE
を使用してリクエスト属性にキャッシュし、その後getResolvedLookupPath(ServletRequest)
経由でアクセスできるようにします。- パラメーター:
request
- 現在のリクエスト- 戻り値:
- 解決されたパス
- 導入:
- 5.3
getResolvedLookupPath
以前のresolved
lookupPath を返します。- パラメーター:
request
- 現在のリクエスト- 戻り値:
- 以前に解決された lookupPath
- 例外:
IllegalArgumentExceptionSE
- ルックアップパスが見つからない場合- 導入:
- 5.3
getLookupPathForRequest
@DeprecatedSE public StringSE getLookupPathForRequest(HttpServletRequestEE request, @Nullable StringSE name) 使用すべきではありません。resolveAndCacheLookupPath(HttpServletRequest)
およびgetResolvedLookupPath(ServletRequest)
の使用を推奨する 5.3 以降。リクエスト属性として保存された、以前に計算された lookupPath のチェックを自動化するgetLookupPathForRequest(HttpServletRequest)
のバリアント。この属性は、検索目的でのみ使用されます。- パラメーター:
request
- 現在の HTTP リクエストname
- lookupPath を保持するリクエスト属性- 戻り値:
- ルックアップパス
- 導入:
- 5.2
getLookupPathForRequest
該当する場合は現在のサーブレットマッピング内、そうでない場合は Web アプリケーション内で、指定されたリクエストのマッピングルックアップパスを返します。RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。
- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- ルックアップパス
- 関連事項:
getPathWithinServletMapping
指定されたリクエストのサーブレットマッピング内のパス、つまりサーブレットを呼び出した部分を超えるリクエストの URL の部分、または URL 全体がサーブレットの識別に使用されている場合は "" を返します。- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- サーブレットマッピング内のパス、または ""
- 関連事項:
getPathWithinServletMapping
protected StringSE getPathWithinServletMapping(HttpServletRequestEE request, StringSE pathWithinApp) 指定されたリクエストのサーブレットマッピング内のパス、つまりサーブレットを呼び出した部分を超えるリクエストの URL の部分、または URL 全体がサーブレットの識別に使用されている場合は "" を返します。RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。
次に例を示します: サーブレットマッピング ="/*"; リクエスト URI="/test/a" → "/test/a"。
次に例を示します: サーブレットマッピング ="/"; リクエスト URI="/test/a" → "/test/a"。
次に例を示します: サーブレットマッピング ="/test/*"; リクエスト URI="/test/a" → "/a"。
次に例を示します: サーブレットマッピング ="/test"; リクエスト URI="/test" → ""。
次に例を示します: サーブレットマッピング ="/*.test"; リクエスト URI="/a.test" → ""。
- パラメーター:
request
- 現在の HTTP リクエストpathWithinApp
- アプリケーション内の事前計算されたパス- 戻り値:
- サーブレットマッピング内のパス、または ""
- 導入:
- 5.2.9
- 関連事項:
getPathWithinApplication
指定されたリクエストの Web アプリケーション内のパスを返します。RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。
- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- Web アプリケーション内のパス
- 関連事項:
getRequestUri
指定されたリクエストのリクエスト URI を返します。RequestDispatcher インクルード内で呼び出された場合、インクルードリクエスト URL を検出します。request.getRequestURI()
によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。Web コンテナーが解決する URI は正しいはずですが、JBoss/Jetty などの一部のコンテナーには ";" が誤って含まれています。URI の "; jsessionid" のような文字列。このメソッドは、このような誤った付録を切り捨てます。
- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- リクエスト URI
getContextPath
RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのコンテキストパスを返します。request.getContextPath()
によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- コンテキストパス
getServletPath
RequestDispatcher インクルード内で呼び出された場合、インクルードリクエスト URL に関して、指定されたリクエストのサーブレットパスを返します。request.getServletPath()
によって返された値はサーブレットコンテナーによってすでにデコードされているため、このメソッドはそれをデコードしようとしません。- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- サーブレットのパス
getOriginatingRequestUri
指定されたリクエストのリクエスト URI を返します。これが転送されたリクエストである場合、元のリクエストのリクエスト URI に正しく解決されます。getOriginatingContextPath
RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのコンテキストパスを返します。request.getContextPath()
によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- コンテキストパス
getOriginatingServletPath
RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのサーブレットパスを返します。- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- サーブレットのパス
getOriginatingQueryString
指定されたリクエストの URL のクエリ文字列部分を返します。これが転送されたリクエストである場合、元のリクエストのクエリ文字列に正しく解決されます。- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- クエリ文字列
decodeRequestString
指定されたソース文字列を URLDecoder でデコードします。エンコーディングはリクエストから取得され、デフォルトの "ISO-8859-1" にフォールバックします。デフォルトの実装では
URLDecoder.decode(input, enc)
を使用します。- パラメーター:
request
- 現在の HTTP リクエストsource
- デコードする文字列- 戻り値:
- デコードされた文字列
- 関連事項:
determineEncoding
指定されたリクエストのエンコーディングを決定します。サブクラスでオーバーライドできます。デフォルトの実装では、リクエストのエンコーディングをチェックし、このリゾルバーに指定されているデフォルトのエンコーディングにフォールバックします。
- パラメーター:
request
- 現在の HTTP リクエスト- 戻り値:
- リクエストのエンコーディング (非
null
) - 関連事項:
removeSemicolonContent
removeSemicolonContent プロパティが "true" に設定されている場合、指定されたリクエスト URI から ";" (セミコロン) コンテンツを削除します。"jsessionid" は常に削除されることに注意してください。- パラメーター:
requestUri
- 削除するリクエスト URI 文字列 ";" からのコンテンツ- 戻り値:
- 更新された URI 文字列
decodePathVariables
public MapSE<StringSE,StringSE> decodePathVariables(HttpServletRequestEE request, MapSE<StringSE, StringSE> vars) setUrlDecode(boolean)
がtrue
に設定されていない限り、指定された URI パス変数をdecodeRequestString(jakarta.servlet.http.HttpServletRequest, java.lang.String)
を介してデコードします。この場合、変数の抽出元の URL パスはgetLookupPathForRequest(HttpServletRequest)
の呼び出しによってすでにデコードされていると見なされます。- パラメーター:
request
- 現在の HTTP リクエストvars
- URL パスから抽出された URI 変数- 戻り値:
- 同じ Map または新しい Map インスタンス
decodeMatrixVariables
public MultiValueMap<StringSE,StringSE> decodeMatrixVariables(HttpServletRequestEE request, MultiValueMap<StringSE, StringSE> vars) setUrlDecode(boolean)
がtrue
に設定されていない限り、指定されたマトリックス変数をdecodeRequestString(jakarta.servlet.http.HttpServletRequest, java.lang.String)
を介してデコードします。この場合、変数の抽出元の URL パスはgetLookupPathForRequest(HttpServletRequest)
の呼び出しによってすでにデコードされていると見なされます。- パラメーター:
request
- 現在の HTTP リクエストvars
- URL パスから抽出された URI 変数- 戻り値:
- 同じ Map または新しい Map インスタンス
resolveAndCacheLookupPath(HttpServletRequest)
およびgetResolvedLookupPath(ServletRequest)
の使用を推奨する 5.3 以降。