クラス 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
フィールドのサマリー
クラス WebContentGenerator から継承されたフィールド
HEADER_CACHE_CONTROL, METHOD_GET, METHOD_HEAD, METHOD_POSTコンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明voidgetCorsConfiguration(jakarta.servlet.http.HttpServletRequest request) 指定された CORS 設定を返します。リソースを提供するときに使用される HTTP ETag ジェネレーター関数を返します。setLocationValuesを介して提供される文字列ベースの場所とsetLocationsを介して提供される事前解決済みのResourceの場所の両方を含む、Resourceの場所の構成済みListを返します。getMediaType(jakarta.servlet.http.HttpServletRequest request, Resource resource) 指定されたリクエストのメディア型とそれに一致するリソースを決定します。configuredメディア型を返します。getResource(jakarta.servlet.http.HttpServletRequest request) 構成済みのリソースコンバーターを返します。構成済みのリソース領域コンバーターを返します。設定されたリソースリゾルバーのリストを返します。設定済みのリソーストランスフォーマのリストを返します。非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。voidhandleRequest(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) リソースリクエストを処理します。protected void構成されたリソースリゾルバーの中からPathResourceResolverを探し、そのクラスで構成されたlocationsと一致するようにallowedLocationsプロパティ(空の場合)を設定します。protected booleanisInvalidPath(StringSE path) ResourceHandlerUtils.isInvalidPath(String)の後に呼び出され、サブクラスがさらに検証を実行できるようにします。boolean起動時の存在チェックを通じて指定された場所を最適化するかどうかを返し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。boolean静的リソースを提供するときに、Resource.lastModified()情報を使用して HTTP レスポンスを駆動するかどうかを返します。protected StringSEprocessPath(StringSE path) 指定されたリソースパスを処理します。voidsetCorsConfiguration(CorsConfiguration corsConfiguration) このハンドラーによって処理されるリソースの CORS 構成を指定します。voidsetEmbeddedValueResolver(StringValueResolver resolver) StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。voidsetEtagGenerator(@Nullable FunctionSE<Resource, StringSE> etagGenerator) レスポンスに書き込もうとしているResourceを考慮して、ETag 情報の作成に使用されるジェネレーター関数を構成します。protected voidsetHeaders(jakarta.servlet.http.HttpServletResponse response, Resource resource, @Nullable MediaType mediaType) 指定されたサーブレットレスポンスにヘッダーを設定します。voidsetLocations(ListSE<Resource> locations) 事前リソースリソースとしてリソースを提供する場所を構成します。voidsetLocationValues(ListSE<StringSE> locations) リソースを提供する文字列ベースの場所を構成します。voidsetMediaTypes(MapSE<StringSE, MediaType> mediaTypes) 静的Resourceのファイル名から抽出されたファイル拡張子と対応するメディア型の間にマッピングを追加して、レスポンスに設定します。voidsetOptimizeLocations(boolean optimizeLocations) 起動時の存在チェックで指定した場所を最適化するかどうかを設定し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。voidsetResourceHttpMessageConverter(@Nullable ResourceHttpMessageConverter messageConverter) 使用するResourceHttpMessageConverterを構成します。voidsetResourceRegionHttpMessageConverter(@Nullable ResourceRegionHttpMessageConverter messageConverter) 使用するResourceRegionHttpMessageConverterを構成します。voidsetResourceResolvers(@Nullable ListSE<ResourceResolver> resourceResolvers) 使用するResourceResolversのリストを構成します。voidsetResourceTransformers(@Nullable ListSE<ResourceTransformer> resourceTransformers) 使用するResourceTransformersのリストを構成します。voidsetUrlPathHelper(@Nullable UrlPathHelper urlPathHelper) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。PathMatcherおよびUrlPathHelperの使用は、Web モジュールでの実行時の使用では非推奨となり、代わりにPathPatternParserによる解析パターンが推奨されます。voidsetUseLastModified(boolean useLastModified) リソースを提供するときにResource.lastModified()を確認し、この情報を使用して"Last-Modified"HTTP レスポンスヘッダーを駆動するかどうかを設定します。toString()クラス WebContentGenerator から継承されたメソッド
applyCacheControl, applyCacheSeconds, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isRequireSession, prepareResponse, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setVaryByRequestHeadersクラス WebApplicationObjectSupport から継承されたメソッド
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
コンストラクターの詳細
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()による初期化後にのみ完全に初期化されることに注意してください。注意 : 場所のリストは、実際には存在しない場所を除外するようにフィルタリングされる場合があります。そのため、このメソッドから返されるリストは、指定されたすべての場所のサブセットになる可能性があります。
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
setMediaTypes
静的Resourceのファイル名から抽出されたファイル拡張子と対応するメディア型の間にマッピングを追加して、レスポンスに設定します。マッピングは
ServletContext.getMimeType(String)またはMediaTypeFactory.getMediaType(Resource)を介して決定されるため、通常はこのメソッドを使用する必要はありません。- パラメーター:
mediaTypes- メディア型のマッピング- 導入:
- 5.2.4
getMediaTypes
setCorsConfiguration
このハンドラーによって処理されるリソースの CORS 構成を指定します。デフォルトでは、これはクロスオリジンリクエストを許可するように設定されていません。
getCorsConfiguration
public @Nullable CorsConfiguration getCorsConfiguration(jakarta.servlet.http.HttpServletRequest request) 指定された CORS 設定を返します。- 次で指定:
- インターフェース
CorsConfigurationSourceのgetCorsConfiguration - 戻り値:
- 関連する
CorsConfiguration、または存在しない場合はnull
setUrlPathHelper
@DeprecatedSE(since="7.0", forRemoval=true) public void setUrlPathHelper(@Nullable UrlPathHelper urlPathHelper) 非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。PathMatcherおよびUrlPathHelperの使用は、Web モジュールでの実行時の使用では非推奨となり、代わりにPathPatternParserによる解析パターンが推奨されます。リクエストを静的リソースにマップするために使用されるUrlPathHelperへの参照を提供します。これは、デコードされているかどうかなど、ルックアップパスに関する情報を導き出すのに役立ちます。- 導入:
- 4.3.13
getUrlPathHelper
非推奨、削除予定: この API 要素は、将来のバージョンで削除される可能性があります。PathMatcherおよびUrlPathHelperの使用は、Web モジュールでの実行時の使用では非推奨となり、代わりにPathPatternParserによる解析パターンが推奨されます。構成された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
インターフェースからコピーされた説明:EmbeddedValueResolverAwareStringValueResolver を設定して、埋め込まれた定義値の解決に使用します。- 次で指定:
- インターフェース
EmbeddedValueResolverAwareのsetEmbeddedValueResolver
afterPropertiesSet
インターフェースからコピーされた説明:InitializingBeanすべての Bean プロパティを設定し、BeanFactoryAware、ApplicationContextAwareなどを満たした後、包含BeanFactoryによって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
- 次で指定:
- インターフェース
InitializingBeanのafterPropertiesSet - 例外:
ExceptionSE- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合
initAllowedLocations
protected void initAllowedLocations()構成されたリソースリゾルバーの中からPathResourceResolverを探し、そのクラスで構成されたlocationsと一致するようにallowedLocationsプロパティ(空の場合)を設定します。handleRequest
public void handleRequest(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws jakarta.servlet.ServletException, IOExceptionSE リソースリクエストを処理します。構成された場所のいずれかで、リクエストされたリソースを検索します。リソースが存在しない場合は、
NoResourceFoundExceptionが発生します。リソースが存在する場合は、リクエストでLast-Modifiedヘッダーの存在がチェックされ、その値が指定されたリソースの最終変更タイムスタンプと比較され、Last-Modified値の方が大きい場合は304ステータスコードが返されます。リソースがLast-Modified値より新しい場合、またはヘッダーが存在しない場合、リソースのコンテンツリソースは、1 年後に期限切れになるように設定されたキャッシュヘッダーとともにレスポンスに書き込まれます。- 次で指定:
- インターフェース
HttpRequestHandlerのhandleRequest - パラメーター:
request- 現在の HTTP リクエストresponse- 現在の HTTP レスポンス- 例外:
jakarta.servlet.ServletException- 一般的なエラーの場合IOExceptionSE- I/O エラーの場合
getResource
protected @Nullable Resource getResource(jakarta.servlet.http.HttpServletRequest request) throws IOExceptionSE processPath
指定されたリソースパスを処理します。デフォルトでは、このメソッドは
ResourceHandlerUtils.normalizeInputPath(String)に委譲します。- 導入:
- 3.2.12
isInvalidPath
ResourceHandlerUtils.isInvalidPath(String)の後に呼び出され、サブクラスがさらに検証を実行できるようにします。デフォルトでは、このメソッドは検証を実行しません。
getMediaType
protected @Nullable MediaType getMediaType(jakarta.servlet.http.HttpServletRequest request, Resource resource) 指定されたリクエストのメディア型とそれに一致するリソースを特定します。この実装は、リソースファイル名とそのパス拡張子に基づいて、次のルックアップのいずれかを使用して MediaType を決定しようとします。ServletContext.getMimeType(String)getMediaTypes()MediaTypeFactory.getMediaType(String)
- パラメーター:
request- 現在のリクエストresource- チェックするリソース- 戻り値:
- 対応するメディア型、または見つからない場合は
null
setHeaders
protected void setHeaders(jakarta.servlet.http.HttpServletResponse response, Resource resource, @Nullable MediaType mediaType) throws IOExceptionSE 指定されたサーブレットレスポンスにヘッダーを設定します。GET リクエストおよび HEAD リクエストに対して呼び出されます。- パラメーター:
response- 現在のサーブレットレスポンスresource- 特定されたリソース (非null)mediaType- リソースのメディア型- 例外:
IOExceptionSE- ヘッダーの設定中にエラーが発生した場合
toString
PathMatcherおよびUrlPathHelperの使用は、Web モジュールでの実行時の使用では非推奨となり、代わりにPathPatternParserによる解析パターンが推奨されます。