クラス ResourceHttpRequestHandler
- 実装されたすべてのインターフェース:
Aware
、InitializingBean
、ApplicationContextAware
、EmbeddedValueResolverAware
、ServletContextAware
、CorsConfigurationSource
、HttpRequestHandler
HttpRequestHandler
プロパティ "locations" および "locationValues" は、このハンドラーによって静的リソースが提供される場所を受け入れます。これは、Web アプリケーションのルートまたはクラスパスからの相対値 (例: "classpath:/META-INF/public-web-resources/"") にすることができ、.js、.css などのリソースを jar ファイルに簡単にパッケージ化して提供できます。
このリクエストハンドラーは、resourcesResolver
および resourceTransformer
チェーンで構成して、提供されるリソースの任意の解決と変換をサポートすることもできます。デフォルトでは、PathResourceResolver
は構成された「場所」に基づいてリソースを検索するだけです。アプリケーションは、URL にバージョンが含まれるリソースの URL を解決および準備できる VersionResourceResolver
などの追加のリゾルバーおよびトランスフォーマーを構成できます。
また、このハンドラーは Last-Modified
ヘッダー(存在する場合)を適切に評価するため、304
ステータスコードが適切に返され、クライアントによってすでにキャッシュされているリソースの不要なオーバーヘッドが回避されます。
- 導入:
- 3.0.4
- 作成者:
- Keith Donald, Jeremy Grelle, Juergen Hoeller, Arjen Poutsma, Brian Clozel, Rossen Stoyanchev
フィールドサマリー
クラス org.springframework.web.servlet.support.WebContentGenerator から継承されたフィールド
HEADER_CACHE_CONTROL, METHOD_GET, METHOD_HEAD, METHOD_POST
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明void
使用すべきではありません。5.2.4 現在getCorsConfiguration
(HttpServletRequestEE request) 指定された CORS 設定を返します。リソースを提供するときに使用される HTTP ETag ジェネレーター関数を返します。setLocationValues
を介して提供される文字列ベースの場所とsetLocations
を介して提供される事前解決済みのResource
の場所の両方を含む、Resource
の場所の構成済みList
を返します。protected MediaType
getMediaType
(HttpServletRequestEE request, Resource resource) 指定されたリクエストのメディア型とそれに一致するリソースを決定します。configured
メディア型を返します。protected Resource
getResource
(HttpServletRequestEE request) 構成済みのリソースコンバーターを返します。構成済みのリソース領域コンバーターを返します。設定されたリソースリゾルバーのリストを返します。設定済みのリソーストランスフォーマのリストを返します。構成されたUrlPathHelper
。void
handleRequest
(HttpServletRequestEE request, HttpServletResponseEE response) リソースリクエストを処理します。protected void
構成されたリソースリゾルバーの中からPathResourceResolver
を探し、そのクラスで構成されたlocations
と一致するようにallowedLocations
プロパティ(空の場合)を設定します。protected PathExtensionContentNegotiationStrategy
使用すべきではありません。5.2.4 の時点で、このメソッドはnull
を返します。サブクラスが実際のインスタンスを返す場合、インスタンスはメディア型 マッピングのソースとしてのみ使用されます (含まれている場合)。protected boolean
isInvalidPath
(StringSE path) ResourceHandlerUtils.isInvalidPath(String)
の後に呼び出され、サブクラスがさらに検証を実行できるようにします。boolean
起動時の存在チェックを通じて指定された場所を最適化するかどうかを返し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。boolean
静的リソースを提供するときに、Resource.lastModified()
情報を使用して HTTP レスポンスを駆動するかどうかを返します。protected StringSE
processPath
(StringSE path) 指定されたリソースパスを処理します。void
setContentNegotiationManager
(ContentNegotiationManager contentNegotiationManager) 使用すべきではありません。5.2.4 以降、ContentNegotiationManager.getMediaTypeMappings()
から取得したマッピングでsetMediaTypes(Map)
を使用することを推奨します。void
setCorsConfiguration
(CorsConfiguration corsConfiguration) このハンドラーによって処理されるリソースの CORS 構成を指定します。void
setEmbeddedValueResolver
(StringValueResolver resolver) StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。void
setEtagGenerator
(FunctionSE<Resource, StringSE> etagGenerator) レスポンスに書き込もうとしているResource
を考慮して、ETag 情報の作成に使用されるジェネレーター関数を構成します。protected void
setHeaders
(HttpServletResponseEE response, Resource resource, MediaType mediaType) 指定されたサーブレットレスポンスにヘッダーを設定します。void
setLocations
(ListSE<Resource> locations) 事前リソースリソースとしてリソースを提供する場所を構成します。void
setLocationValues
(ListSE<StringSE> locations) リソースを提供する文字列ベースの場所を構成します。void
setMediaTypes
(MapSE<StringSE, MediaType> mediaTypes) 静的Resource
のファイル名から抽出されたファイル拡張子と対応するメディア型の間にマッピングを追加して、レスポンスに設定します。void
setOptimizeLocations
(boolean optimizeLocations) 起動時の存在チェックで指定した場所を最適化するかどうかを設定し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。void
setResourceHttpMessageConverter
(ResourceHttpMessageConverter messageConverter) 使用するResourceHttpMessageConverter
を構成します。void
setResourceRegionHttpMessageConverter
(ResourceRegionHttpMessageConverter messageConverter) 使用するResourceRegionHttpMessageConverter
を構成します。void
setResourceResolvers
(ListSE<ResourceResolver> resourceResolvers) 使用するResourceResolvers
のリストを構成します。void
setResourceTransformers
(ListSE<ResourceTransformer> resourceTransformers) 使用するResourceTransformers
のリストを構成します。void
setUrlPathHelper
(UrlPathHelper urlPathHelper) リクエストを静的リソースにマップするために使用されるUrlPathHelper
への参照を提供します。void
setUseLastModified
(boolean useLastModified) リソースを提供するときにResource.lastModified()
を確認し、この情報を使用して"Last-Modified"
HTTP レスポンスヘッダーを駆動するかどうかを設定します。toString()
クラス org.springframework.web.servlet.support.WebContentGenerator から継承されたメソッド
applyCacheControl, applyCacheSeconds, checkAndPrepare, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isRequireSession, prepareResponse, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setVaryByRequestHeaders
クラス org.springframework.web.context.support.WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
クラス org.springframework.context.support.ApplicationObjectSupport から継承されたメソッド
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
コンストラクターの詳細
ResourceHttpRequestHandler
public ResourceHttpRequestHandler()
メソッドの詳細
setLocationValues
リソースを提供する文字列ベースの場所を構成します。例: {
"/"
、"classpath:/META-INF/public-web-resources/"
} では、Web アプリケーションルートと、/META-INF/public-web-resources/
ディレクトリを含むクラスパス上の JAR の両方からリソースを提供できます。Web アプリケーションルートのリソースが優先されます。URL-based resources
(ファイル、HTTP URL など) の場合、このメソッドは、URL に関連付けられた文字セットを示す特別なプレフィックスをサポートしているため、それに追加された相対パスを正しくエンコードできます (例:"[charset=Windows-31J]https://example.org/path"
)。- 導入:
- 4.3.13
- 関連事項:
setLocations
事前リソースリソースとしてリソースを提供する場所を構成します。getLocations
setLocationValues
を介して提供される文字列ベースの場所とsetLocations
を介して提供される事前解決済みのResource
の場所の両方を含む、Resource
の場所の構成済みList
を返します。返されるリストは、
afterPropertiesSet()
による初期化後にのみ完全に初期化されることに注意してください。注意 : 5.3.11 の時点で、場所のリストは実際には存在しない場所を除外するようにフィルタリングされる可能性があるため、このメソッドから返されるリストは、指定されたすべての場所のサブセットである可能性があります。
setOptimizeLocations(boolean)
を参照してください。setResourceResolvers
使用するResourceResolvers
のリストを構成します。デフォルトでは、
PathResourceResolver
が構成されています。このプロパティを使用する場合、PathResourceResolver
を最後のリゾルバーとして追加することをお勧めします。getResourceResolvers
設定されたリソースリゾルバーのリストを返します。setResourceTransformers
使用するResourceTransformers
のリストを構成します。デフォルトでは、使用するトランスフォーマは構成されていません。
getResourceTransformers
設定済みのリソーストランスフォーマのリストを返します。setResourceHttpMessageConverter
public void setResourceHttpMessageConverter(@Nullable ResourceHttpMessageConverter messageConverter) 使用するResourceHttpMessageConverter
を構成します。デフォルトでは、
ResourceHttpMessageConverter
が構成されます。- 導入:
- 4.3
getResourceHttpMessageConverter
構成済みのリソースコンバーターを返します。- 導入:
- 4.3
setResourceRegionHttpMessageConverter
public void setResourceRegionHttpMessageConverter(@Nullable ResourceRegionHttpMessageConverter messageConverter) 使用するResourceRegionHttpMessageConverter
を構成します。デフォルトでは、
ResourceRegionHttpMessageConverter
が構成されます。- 導入:
- 4.3
getResourceRegionHttpMessageConverter
構成済みのリソース領域コンバーターを返します。- 導入:
- 4.3
setContentNegotiationManager
@DeprecatedSE public void setContentNegotiationManager(@Nullable ContentNegotiationManager contentNegotiationManager) 使用すべきではありません。5.2.4 以降、ContentNegotiationManager.getMediaTypeMappings()
から取得したマッピングでsetMediaTypes(Map)
を使用することを推奨します。ContentNegotiationManager
を設定して、提供されているリソースのメディア型を決定します。マネージャーにパス拡張子戦略が含まれている場合、登録されているファイル拡張子がチェックされます。- 導入:
- 4.3
getContentNegotiationManager
使用すべきではありません。5.2.4 現在設定済みのコンテンツネゴシエーションマネージャーを返します。- 導入:
- 4.3
setMediaTypes
静的Resource
のファイル名から抽出されたファイル拡張子と対応するメディア型の間にマッピングを追加して、レスポンスに設定します。マッピングは
ServletContext.getMimeType(String)
EE またはMediaTypeFactory.getMediaType(Resource)
を介して別の方法で決定されるため、通常、このメソッドを使用する必要はありません。- パラメーター:
mediaTypes
- メディア型のマッピング- 導入:
- 5.2.4
getMediaTypes
configured
メディア型を返します。- 導入:
- 5.2.4
setCorsConfiguration
このハンドラーによって処理されるリソースの CORS 構成を指定します。デフォルトでは、これはクロスオリジンリクエストを許可するように設定されていません。
getCorsConfiguration
指定された CORS 設定を返します。- 次で指定:
- インターフェース
CorsConfigurationSource
のgetCorsConfiguration
- 戻り値:
- 関連する
CorsConfiguration
、または存在しない場合はnull
setUrlPathHelper
リクエストを静的リソースにマップするために使用されるUrlPathHelper
への参照を提供します。これは、デコードされているかどうかなど、ルックアップパスに関する情報を導き出すのに役立ちます。- 導入:
- 4.3.13
getUrlPathHelper
構成されたUrlPathHelper
。- 導入:
- 4.3.13
setUseLastModified
public void setUseLastModified(boolean useLastModified) リソースを提供するときにResource.lastModified()
を確認し、この情報を使用して"Last-Modified"
HTTP レスポンスヘッダーを駆動するかどうかを設定します。このオプションはデフォルトで有効になっており、静的ファイルのメタデータを無視する必要がある場合はオフにする必要があります。
- 導入:
- 5.3
isUseLastModified
public boolean isUseLastModified()静的リソースを提供するときに、Resource.lastModified()
情報を使用して HTTP レスポンスを駆動するかどうかを返します。- 導入:
- 5.3
setEtagGenerator
レスポンスに書き込もうとしているResource
を考慮して、ETag 情報の作成に使用されるジェネレーター関数を構成します。この関数は、
ServletWebRequest.checkNotModified(String)
で引数として使用される String を返す必要があります。指定されたリソースに対して値を生成できない場合はnull
で引数として使用されます。- パラメーター:
etagGenerator
- 使用する HTTP ETag ジェネレーター関数。- 導入:
- 6.1
getEtagGenerator
リソースを提供するときに使用される HTTP ETag ジェネレーター関数を返します。- 戻り値:
- HTTP ETag ジェネレーター関数
- 導入:
- 6.1
setOptimizeLocations
public void setOptimizeLocations(boolean optimizeLocations) 起動時の存在チェックで指定した場所を最適化するかどうかを設定し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。デフォルトは
false
です。これは、ディレクトリの存在を事前に公開できないディレクトリエントリのない zip ファイルに対する防御のためです。ディレクトリエントリとの一貫した jar レイアウトの場合に最適化されたアクセスのために、このフラグをtrue
に切り替えます。- 導入:
- 5.3.13
isOptimizeLocations
public boolean isOptimizeLocations()起動時の存在チェックを通じて指定された場所を最適化するかどうかを返し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。- 導入:
- 5.3.13
setEmbeddedValueResolver
インターフェースからコピーされた説明:EmbeddedValueResolverAware
StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。- 次で指定:
- インターフェース
EmbeddedValueResolverAware
のsetEmbeddedValueResolver
afterPropertiesSet
インターフェースからコピーされた説明:InitializingBean
すべての Bean プロパティを設定し、BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBean
のafterPropertiesSet
- 例外:
ExceptionSE
- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合
initAllowedLocations
protected void initAllowedLocations()構成されたリソースリゾルバーの中からPathResourceResolver
を探し、そのクラスで構成されたlocations
と一致するようにallowedLocations
プロパティ(空の場合)を設定します。initContentNegotiationStrategy
@Nullable @DeprecatedSE protected PathExtensionContentNegotiationStrategy initContentNegotiationStrategy()使用すべきではありません。5.2.4 の時点で、このメソッドはnull
を返します。サブクラスが実際のインスタンスを返す場合、インスタンスはメディア型マッピングのソースとしてのみ使用されます(含まれている場合)。代わりにsetMediaTypes(Map)
を使用してください。動作を変更する必要がある場合は、getMediaType(HttpServletRequest, Resource)
をオーバーライドできます。リソースのメディア型を決定するために使用する戦略を初期化します。handleRequest
public void handleRequest(HttpServletRequestEE request, HttpServletResponseEE response) throws ServletExceptionEE, IOExceptionSE リソースリクエストを処理します。構成された場所のいずれかで、リクエストされたリソースを検索します。リソースが存在しない場合は、
NoResourceFoundException
が発生します。リソースが存在する場合は、リクエストでLast-Modified
ヘッダーの存在がチェックされ、その値が指定されたリソースの最終変更タイムスタンプと比較され、Last-Modified
値の方が大きい場合は304
ステータスコードが返されます。リソースがLast-Modified
値より新しい場合、またはヘッダーが存在しない場合、リソースのコンテンツリソースは、1 年後に期限切れになるように設定されたキャッシュヘッダーとともにレスポンスに書き込まれます。- 次で指定:
- インターフェース
HttpRequestHandler
のhandleRequest
- パラメーター:
request
- 現在の HTTP リクエストresponse
- 現在の HTTP レスポンス- 例外:
ServletExceptionEE
- 一般的なエラーの場合IOExceptionSE
- I/O エラーの場合
getResource
processPath
指定されたリソースパスを処理します。デフォルトでは、このメソッドは
ResourceHandlerUtils.normalizeInputPath(java.lang.String)
に委譲します。- 導入:
- 3.2.12
isInvalidPath
ResourceHandlerUtils.isInvalidPath(String)
の後に呼び出され、サブクラスがさらに検証を実行できるようにします。デフォルトでは、このメソッドは検証を実行しません。
getMediaType
指定されたリクエストのメディア型とそれに一致するリソースを特定します。この実装は、リソースファイル名とそのパス拡張子に基づいて、次のルックアップのいずれかを使用して MediaType を決定しようとします。- パラメーター:
request
- 現在のリクエストresource
- チェックするリソース- 戻り値:
- 対応するメディア型、または見つからない場合は
null
setHeaders
protected void setHeaders(HttpServletResponseEE response, Resource resource, @Nullable MediaType mediaType) throws IOExceptionSE 指定されたサーブレットレスポンスにヘッダーを設定します。GET リクエストおよび HEAD リクエストに対して呼び出されます。- パラメーター:
response
- 現在のサーブレットレスポンスresource
- 特定されたリソース (非null
)mediaType
- リソースのメディア型 (非null
)- 例外:
IOExceptionSE
- ヘッダーの設定中にエラーが発生した場合
toString