public class UrlPathHelper extends ObjectSE
RequestDispatcher
インクルードの URL パスのサポートと、一貫した URL デコードのサポートを提供します。AbstractUrlHandlerMapping
および RequestContext
で、パスのマッチングや URI の決定に使用されます。
getLookupPathForRequest(javax.servlet.http.HttpServletRequest)
, RequestDispatcher
EE修飾子と型 | フィールドと説明 |
---|---|
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, waitSE
public static final UrlPathHelper defaultInstance
alwaysUseFullPath=false
urlDecode=true
removeSemicolon=true
defaultEncoding=
WebUtils.DEFAULT_CHARACTER_ENCODING
public static final UrlPathHelper rawPathInstance
alwaysUseFullPath=true
urlDecode=false
removeSemicolon=false
defaultEncoding=
WebUtils.DEFAULT_CHARACTER_ENCODING
public 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_ENCODING
protected 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_PATH
public 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 変数