クラス UrlPathHelper

java.lang.ObjectSE
org.springframework.web.util.UrlPathHelper

public class UrlPathHelper extends ObjectSE
URL パスマッチングのヘルパークラス。RequestDispatcher インクルードの URL パスのサポートと、一貫した URL デコードのサポートを提供します。

AbstractUrlHandlerMapping および RequestContext で、パスのマッチングや URI の決定に使用されます。

導入:
14.01.2004
作成者:
Juergen Hoeller, Rob Harrop, Rossen Stoyanchev
関連事項:
  • フィールドの詳細

    • PATH_ATTRIBUTE

      public static final StringSE PATH_ATTRIBUTE
      resolved lookupPath を保持するサーブレットリクエスト属性の名前。
      導入:
      5.3
    • defaultInstance

      public static final UrlPathHelper defaultInstance
      デフォルトの共有読み取り専用インスタンス。以下が適用されます。
    • rawPathInstance

      public static final UrlPathHelper rawPathInstance
      エンコードされた完全なパスの共有された読み取り専用インスタンス。以下が適用されます。
  • コンストラクターの詳細

    • 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

      public void setDefaultEncoding(StringSE defaultEncoding)
      URL デコードに使用するデフォルトの文字エンコードを設定します。サーブレット仕様によると、デフォルトは ISO-8859-1 です。

      リクエスト自体が文字エンコーディングを指定している場合、リクエストのエンコーディングはこの設定をオーバーライドします。これにより、ServletRequest.setCharacterEncoding メソッドを呼び出すフィルターの文字エンコードを一般的にオーバーライドすることもできます。

      パラメーター:
      defaultEncoding - 使用する文字エンコーディング
      関連事項:
    • getDefaultEncoding

      protected StringSE getDefaultEncoding()
      URL のデコードに使用するデフォルトの文字エンコーディングを返します。
    • resolveAndCacheLookupPath

      public StringSE resolveAndCacheLookupPath(HttpServletRequestEE request)
      Resolve は lookupPath であり、getResolvedLookupPath(ServletRequest) を介した後続のアクセスのために、キー PATH_ATTRIBUTE を使用してリクエスト属性にキャッシュします。
      パラメーター:
      request - 現在のリクエスト
      戻り値:
      解決されたパス
      導入:
      5.3
    • getResolvedLookupPath

      public static StringSE getResolvedLookupPath(ServletRequestEE request)
      以前の resolved lookupPath を返します。
      パラメーター:
      request - 現在のリクエスト
      戻り値:
      以前に解決された lookupPath
      例外:
      IllegalArgumentExceptionSE - ルックアップパスが見つからない場合
      導入:
      5.3
    • getLookupPathForRequest

      @DeprecatedSE public StringSE getLookupPathForRequest(HttpServletRequestEE request, @Nullable StringSE name)
      使用すべきではありません。
      リクエスト属性として保存された、以前に計算された lookupPath のチェックを自動化する getLookupPathForRequest(HttpServletRequest) のバリアント。この属性は、検索目的でのみ使用されます。
      パラメーター:
      request - 現在の HTTP リクエスト
      name - lookupPath を保持するリクエスト属性
      戻り値:
      ルックアップパス
      導入:
      5.2
    • getLookupPathForRequest

      public StringSE getLookupPathForRequest(HttpServletRequestEE request)
      該当する場合は現在のサーブレットマッピング内、そうでない場合は Web アプリケーション内で、指定されたリクエストのマッピングルックアップパスを返します。

      RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。

      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      ルックアップパス
      関連事項:
    • getPathWithinServletMapping

      public StringSE getPathWithinServletMapping(HttpServletRequestEE request)
      指定されたリクエストのサーブレットマッピング内のパス、つまりサーブレットを呼び出した部分を超えるリクエストの URL の部分、または URL 全体がサーブレットの識別に使用されている場合は "" を返します。
      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      サーブレットマッピング内のパス、または ""
      関連事項:
    • getPathWithinServletMapping

      protected StringSE getPathWithinServletMapping(HttpServletRequestEE request, StringSE pathWithinApp)
      指定されたリクエストのサーブレットマッピング内のパス、つまりサーブレットを呼び出した部分を超えるリクエストの URL の部分、または URL 全体がサーブレットの識別に使用されている場合は "" を返します。

      RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。

      E. 例: サーブレットマッピング = "/*"; リクエスト URI="/test/a"→ "/test/a"。

      E.g .: サーブレットマッピング = "/"; リクエスト URI="/test/a"→ "/test/a"。

      E. 例: サーブレットマッピング = "/test/*"; リクエスト URI="/test/a"→ "/NS"。

      E. 例: サーブレットマッピング = "/test"; リクエスト URI="/test"→ ""。

      E. 例: サーブレットマッピング = "/*.test"; リクエスト URI="/a.test"→ ""。

      パラメーター:
      request - 現在の HTTP リクエスト
      pathWithinApp - アプリケーション内の事前計算されたパス
      戻り値:
      サーブレットマッピング内のパス、または ""
      導入:
      5.2.9
      関連事項:
    • getPathWithinApplication

      public StringSE getPathWithinApplication(HttpServletRequestEE request)
      指定されたリクエストの Web アプリケーション内のパスを返します。

      RequestDispatcher include 内で呼び出された場合、include リクエスト URL を検出します。

      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      Web アプリケーション内のパス
      関連事項:
    • getRequestUri

      public StringSE getRequestUri(HttpServletRequestEE request)
      指定されたリクエストのリクエスト URI を返します。RequestDispatcher インクルード内で呼び出された場合、インクルードリクエスト URL を検出します。

      request.getRequestURI() によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。

      Web コンテナーが解決する URI は正しいはずですが、JBoss/Jetty などの一部のコンテナーには ";" が誤って含まれています。URI の "; jsessionid" のような文字列。このメソッドは、このような誤った付録を切り捨てます。

      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      リクエスト URI
    • getContextPath

      public StringSE getContextPath(HttpServletRequestEE request)
      RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのコンテキストパスを返します。

      request.getContextPath() によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。

      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      コンテキストパス
    • getServletPath

      public StringSE getServletPath(HttpServletRequestEE request)
      RequestDispatcher インクルード内で呼び出された場合、インクルードリクエスト URL に関して、指定されたリクエストのサーブレットパスを返します。

      request.getServletPath() によって返された値はサーブレットコンテナーによってすでにデコードされているため、このメソッドはそれをデコードしようとしません。

      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      サーブレットのパス
    • getOriginatingRequestUri

      public StringSE getOriginatingRequestUri(HttpServletRequestEE request)
      指定されたリクエストのリクエスト URI を返します。これが転送されたリクエストである場合、元のリクエストのリクエスト URI に正しく解決されます。
    • getOriginatingContextPath

      public StringSE getOriginatingContextPath(HttpServletRequestEE request)
      RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのコンテキストパスを返します。

      request.getContextPath() によって返される値はサーブレットコンテナーによってデコードされないため、このメソッドはそれをデコードします。

      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      コンテキストパス
    • getOriginatingServletPath

      public StringSE getOriginatingServletPath(HttpServletRequestEE request)
      RequestDispatcher インクルード内で呼び出された場合にインクルードリクエスト URL を検出して、指定されたリクエストのサーブレットパスを返します。
      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      サーブレットのパス
    • getOriginatingQueryString

      public StringSE getOriginatingQueryString(HttpServletRequestEE request)
      指定されたリクエストの URL のクエリ文字列部分を返します。これが転送されたリクエストである場合、元のリクエストのクエリ文字列に正しく解決されます。
      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      クエリ文字列
    • decodeRequestString

      public StringSE decodeRequestString(HttpServletRequestEE request, StringSE source)
      指定されたソース文字列を URLDecoder でデコードします。エンコーディングはリクエストから取得され、デフォルトの "ISO-8859-1" にフォールバックします。

      デフォルトの実装では URLDecoder.decode(input, enc) を使用します。

      パラメーター:
      request - 現在の HTTP リクエスト
      source - デコードする文字列
      戻り値:
      デコードされた文字列
      関連事項:
    • determineEncoding

      protected StringSE determineEncoding(HttpServletRequestEE request)
      指定されたリクエストのエンコーディングを決定します。サブクラスでオーバーライドできます。

      デフォルトの実装では、リクエストのエンコーディングをチェックし、このリゾルバーに指定されているデフォルトのエンコーディングにフォールバックします。

      パラメーター:
      request - 現在の HTTP リクエスト
      戻り値:
      リクエストのエンコーディング (非 null)
      関連事項:
    • removeSemicolonContent

      public StringSE removeSemicolonContent(StringSE requestUri)
      削除する ";" (セミコロン) 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 インスタンス