public class UrlPathHelper extends ObjectSE
RequestDispatcher インクルードの URL パスのサポートと、一貫した URL デコードのサポートを提供します。AbstractUrlHandlerMapping および RequestContext で、パスのマッチングや URI の決定に使用されます。
getLookupPathForRequest(javax.servlet.http.HttpServletRequest), RequestDispatcherEE| 修飾子と型 | フィールドと説明 |
|---|---|
static UrlPathHelper | defaultInstance デフォルトの共有読み取り専用インスタンス。 |
static UrlPathHelper | rawPathInstance エンコードされた完全なパスの共有された読み取り専用インスタンス。 |
| コンストラクターと説明 |
|---|
UrlPathHelper() |
| 修飾子と型 | メソッドと説明 |
|---|---|
MultiValueMap<StringSE, StringSE> | decodeMatrixVariables(HttpServletRequestEE request, MultiValueMap<StringSE, StringSE> vars)setUrlDecode(boolean) が true に設定されていない限り、指定されたマトリックス変数を decodeRequestString(javax.servlet.http.HttpServletRequest, java.lang.String) を介してデコードします。この場合、変数の抽出元の URL パスは getLookupPathForRequest(HttpServletRequest) の呼び出しによってすでにデコードされていると見なされます。 |
MapSE<StringSE, StringSE> | decodePathVariables(HttpServletRequestEE request, MapSE<StringSE, StringSE> vars)setUrlDecode(boolean) が true に設定されていない限り、指定された URI パス変数を decodeRequestString(javax.servlet.http.HttpServletRequest, java.lang.String) を介してデコードします。この場合、変数の抽出元の URL パスは getLookupPathForRequest(HttpServletRequest) の呼び出しによってすでにデコードされていると見なされます。 |
StringSE | decodeRequestString(HttpServletRequestEE request, StringSE source) 指定されたソース文字列を URLDecoder でデコードします。 |
protected StringSE | determineEncoding(HttpServletRequestEE request) 指定されたリクエストのエンコーディングを決定します。 |
StringSE | getContextPath(HttpServletRequestEE request)RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのコンテキストパスを返します。 |
protected StringSE | getDefaultEncoding()URL のデコードに使用するデフォルトの文字エンコーディングを返します。 |
StringSE | getLookupPathForRequest(HttpServletRequestEE request) 該当する場合は現在のサーブレットマッピング内、そうでない場合は Web アプリケーション内で、指定されたリクエストのマッピングルックアップパスを返します。 |
StringSE | getLookupPathForRequest(HttpServletRequestEE request, StringSE lookupPathAttributeName) リクエスト属性として保存された、以前に計算された lookupPath のチェックを自動化する getLookupPathForRequest(HttpServletRequest) のバリアント。 |
StringSE | getOriginatingContextPath(HttpServletRequestEE request)RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのコンテキストパスを返します。 |
StringSE | getOriginatingQueryString(HttpServletRequestEE request) 指定されたリクエストの URL のクエリ文字列部分を返します。 |
StringSE | getOriginatingRequestUri(HttpServletRequestEE request) 指定されたリクエストのリクエスト URI を返します。 |
StringSE | getOriginatingServletPath(HttpServletRequestEE request)RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのサーブレットパスを返します。 |
StringSE | getPathWithinApplication(HttpServletRequestEE request) 指定されたリクエストの Web アプリケーション内のパスを返します。 |
StringSE | getPathWithinServletMapping(HttpServletRequestEE request) 指定されたリクエストのサーブレットマッピング内のパスを返します。 |
protected StringSE | getPathWithinServletMapping(HttpServletRequestEE request, StringSE pathWithinApp) 指定されたリクエストのサーブレットマッピング内のパスを返します。 |
StringSE | getRequestUri(HttpServletRequestEE request) 指定されたリクエストのリクエスト URI を返します。RequestDispatcher インクルード内で呼び出された場合、インクルードリクエスト URL を検出します。 |
StringSE | getServletPath(HttpServletRequestEE request)RequestDispatcher インクルード内で呼び出された場合、インクルードリクエスト URL に関して、指定されたリクエストのサーブレットパスを返します。 |
boolean | isUrlDecode() ルックアップパスを決定するときにリクエスト URI をデコードするかどうか。 |
StringSE | removeSemicolonContent(StringSE requestUri)removeSemicolonContent プロパティが "true" に設定されている場合、指定されたリクエスト URI から ";" (セミコロン) コンテンツを削除します。 |
void | setAlwaysUseFullPath(boolean alwaysUseFullPath)URL ルックアップが常に現在の Web アプリケーションコンテキスト内の絶対パスを使用するかどうか、つまり |
void | setDefaultEncoding(StringSE defaultEncoding)URL デコードに使用するデフォルトの文字エンコードを設定します。 |
void | setRemoveSemicolonContent(boolean removeSemicolonContent) ";" の場合に設定(セミコロン)コンテンツはリクエスト URI から削除する必要があります。 |
void | setUrlDecode(boolean urlDecode) コンテキストパスとリクエスト URI をデコードする必要があるかどうか。どちらも、サーブレットパスとは対照的に、サーブレット API によってデコードされずに返されます。 |
boolean | shouldRemoveSemicolonContent() ";" を削除するように設定されているかどうか(セミコロン)リクエスト URI のコンテンツ。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic static final UrlPathHelper defaultInstance
alwaysUseFullPath=falseurlDecode=trueremoveSemicolon=truedefaultEncoding=WebUtils.DEFAULT_CHARACTER_ENCODINGpublic static final UrlPathHelper rawPathInstance
alwaysUseFullPath=trueurlDecode=falseremoveSemicolon=falsedefaultEncoding=WebUtils.DEFAULT_CHARACTER_ENCODINGpublic void setAlwaysUseFullPath(boolean alwaysUseFullPath)
ServletContext.getContextPath()EE 内の絶対パスを使用するかどうか。false に設定すると、該当する場合は、代わりに現在のサーブレットマッピング内のパスが使用されます(つまり、"/myServlet/*" などのプレフィックスベースのサーブレットマッピングの場合)。
デフォルトでは、これは "false" に設定されています。
public void setUrlDecode(boolean urlDecode)
"true" に設定すると、リクエストエンコーディングまたはデフォルトのサーブレット仕様エンコーディング(ISO-8859-1)のいずれかが使用されます。
デフォルトでは true に設定されています。
注意 : エンコードされたパスと比較すると、サーブレットのパスが一致しないことに注意してください。urlDecode=false の使用は、接頭辞ベースのサーブレットマッピングと互換性がなく、同様に alwaysUseFullPath=true の設定も意味します。
public boolean isUrlDecode()
public void setRemoveSemicolonContent(boolean removeSemicolonContent)
デフォルトは「true」。
public boolean shouldRemoveSemicolonContent()
public void setDefaultEncoding(StringSE defaultEncoding)
リクエスト自体が文字エンコーディングを指定している場合、リクエストのエンコーディングはこの設定をオーバーライドします。これにより、ServletRequest.setCharacterEncoding メソッドを呼び出すフィルターの文字エンコードを一般的にオーバーライドすることもできます。
defaultEncoding - 使用する文字エンコーディング determineEncoding(javax.servlet.http.HttpServletRequest), ServletRequest.getCharacterEncoding()EE, ServletRequest.setCharacterEncoding(String)EE, WebUtils.DEFAULT_CHARACTER_ENCODINGprotected StringSE getDefaultEncoding()
public StringSE getLookupPathForRequest(HttpServletRequestEE request)
RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。
request - 現在の HTTP リクエスト getPathWithinServletMapping(javax.servlet.http.HttpServletRequest), getPathWithinApplication(javax.servlet.http.HttpServletRequest)public StringSE getLookupPathForRequest(HttpServletRequestEE request, @Nullable StringSE lookupPathAttributeName)
getLookupPathForRequest(HttpServletRequest) のバリアント。この属性は、検索目的でのみ使用されます。request - 現在の HTTP リクエスト lookupPathAttributeName - チェックするリクエスト属性 HandlerMapping.LOOKUP_PATHpublic StringSE getPathWithinServletMapping(HttpServletRequestEE request)
request - 現在の HTTP リクエスト getPathWithinServletMapping(HttpServletRequest, String)protected StringSE getPathWithinServletMapping(HttpServletRequestEE request, StringSE pathWithinApp)
RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。
E. 例: サーブレットマッピング = "/*"; リクエスト URI="/test/a"-> "/test/a"。
E. 例: サーブレットマッピング = "/"; リクエスト URI="/test/a"-> "/test/a"。
E. 例: サーブレットマッピング = "/test/*"; リクエスト URI="/test/a"-> "/ a"。
E. 例: サーブレットマッピング = "/test"; リクエスト URI="/test"-> ""。
E. 例: サーブレットマッピング = "/*.test"; リクエスト URI="/a.test"-> ""。
request - 現在の HTTP リクエスト pathWithinApp - アプリケーション内の事前計算されたパス getLookupPathForRequest(javax.servlet.http.HttpServletRequest)public StringSE getPathWithinApplication(HttpServletRequestEE request)
RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。
request - 現在の HTTP リクエスト getLookupPathForRequest(javax.servlet.http.HttpServletRequest)public StringSE getRequestUri(HttpServletRequestEE request)
request.getRequestURI() によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。
Web コンテナーが解決する URI は正しいはずですが、JBoss/Jetty などの一部のコンテナーには ";" が誤って含まれています。URI の "; jsessionid" のような文字列。このメソッドは、このような誤った付録を切り捨てます。
request - 現在の HTTP リクエスト public StringSE getContextPath(HttpServletRequestEE request)
request.getContextPath() によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。
request - 現在の HTTP リクエスト public StringSE getServletPath(HttpServletRequestEE request)
request.getServletPath() によって返された値はサーブレットコンテナーによってすでにデコードされているため、このメソッドはそれをデコードしようとしません。
request - 現在の HTTP リクエスト public StringSE getOriginatingRequestUri(HttpServletRequestEE request)
public StringSE getOriginatingContextPath(HttpServletRequestEE request)
request.getContextPath() によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。
request - 現在の HTTP リクエスト public StringSE getOriginatingServletPath(HttpServletRequestEE request)
request - 現在の HTTP リクエスト public StringSE getOriginatingQueryString(HttpServletRequestEE request)
request - 現在の HTTP リクエスト public StringSE decodeRequestString(HttpServletRequestEE request, StringSE source)
デフォルトの実装では URLDecoder.decode(input, enc) を使用します。
request - 現在の HTTP リクエスト source - デコードする文字列 WebUtils.DEFAULT_CHARACTER_ENCODING, ServletRequest.getCharacterEncoding()EE, URLDecoder.decode(String, String)SE, URLDecoder.decode(String)SEprotected StringSE determineEncoding(HttpServletRequestEE request)
デフォルトの実装では、リクエストのエンコーディングをチェックし、このリゾルバーに指定されているデフォルトのエンコーディングにフォールバックします。
request - 現在の HTTP リクエスト null)ServletRequest.getCharacterEncoding()EE, setDefaultEncoding(java.lang.String)public StringSE removeSemicolonContent(StringSE requestUri)
requestUri - 削除するリクエスト URI 文字列 ";" からのコンテンツ public MapSE<StringSE,StringSE> decodePathVariables(HttpServletRequestEE request, MapSE<StringSE,StringSE> vars)
setUrlDecode(boolean) が true に設定されていない限り、指定された URI パス変数を decodeRequestString(javax.servlet.http.HttpServletRequest, java.lang.String) を介してデコードします。この場合、変数の抽出元の URL パスは getLookupPathForRequest(HttpServletRequest) の呼び出しによってすでにデコードされていると見なされます。request - 現在の HTTP リクエスト vars - URL パスから抽出された URI 変数 public MultiValueMap<StringSE,StringSE> decodeMatrixVariables(HttpServletRequestEE request, MultiValueMap<StringSE,StringSE> vars)
setUrlDecode(boolean) が true に設定されていない限り、指定されたマトリックス変数を decodeRequestString(javax.servlet.http.HttpServletRequest, java.lang.String) を介してデコードします。この場合、変数の抽出元の URL パスは getLookupPathForRequest(HttpServletRequest) の呼び出しによってすでにデコードされていると見なされます。request - 現在の HTTP リクエスト vars - URL パスから抽出された URI 変数