クラス 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 MediaTypegetMediaType(HttpServletRequestEE request, Resource resource) 指定されたリクエストのメディア型とそれに一致するリソースを決定します。configuredメディア型を返します。protected ResourcegetResource(HttpServletRequestEE request) 構成済みのリソースコンバーターを返します。構成済みのリソース領域コンバーターを返します。設定されたリソースリゾルバーのリストを返します。設定済みのリソーストランスフォーマのリストを返します。構成されたUrlPathHelper。voidhandleRequest(HttpServletRequestEE request, HttpServletResponseEE response) リソースリクエストを処理します。protected void構成されたリソースリゾルバーの中からPathResourceResolverを探し、そのクラスで構成されたlocationsと一致するようにallowedLocationsプロパティ(空の場合)を設定します。protected PathExtensionContentNegotiationStrategy使用すべきではありません。5.2.4 の時点で、このメソッドはnullを返します。サブクラスが実際のインスタンスを返す場合、インスタンスはメディア型 マッピングのソースとしてのみ使用されます (含まれている場合)。protected booleanisInvalidPath(StringSE path) ResourceHandlerUtils.isInvalidPath(String)の後に呼び出され、サブクラスがさらに検証を実行できるようにします。boolean起動時の存在チェックを通じて指定された場所を最適化するかどうかを返し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。boolean静的リソースを提供するときに、Resource.lastModified()情報を使用して HTTP レスポンスを駆動するかどうかを返します。protected StringSEprocessPath(StringSE path) 指定されたリソースパスを処理します。voidsetContentNegotiationManager(ContentNegotiationManager contentNegotiationManager) 使用すべきではありません。5.2.4 以降、ContentNegotiationManager.getMediaTypeMappings()から取得したマッピングでsetMediaTypes(Map)を使用することを推奨します。voidsetCorsConfiguration(CorsConfiguration corsConfiguration) このハンドラーによって処理されるリソースの CORS 構成を指定します。voidsetEmbeddedValueResolver(StringValueResolver resolver) StringValueResolver を設定して、埋め込まれた定義値の解決に使用します。voidsetEtagGenerator(FunctionSE<Resource, StringSE> etagGenerator) レスポンスに書き込もうとしているResourceを考慮して、ETag 情報の作成に使用されるジェネレーター関数を構成します。protected voidsetHeaders(HttpServletResponseEE response, Resource resource, MediaType mediaType) 指定されたサーブレットレスポンスにヘッダーを設定します。voidsetLocations(ListSE<Resource> locations) 事前リソースリソースとしてリソースを提供する場所を構成します。voidsetLocationValues(ListSE<StringSE> locations) リソースを提供する文字列ベースの場所を構成します。voidsetMediaTypes(MapSE<StringSE, MediaType> mediaTypes) 静的Resourceのファイル名から抽出されたファイル拡張子と対応するメディア型の間にマッピングを追加して、レスポンスに設定します。voidsetOptimizeLocations(boolean optimizeLocations) 起動時の存在チェックで指定した場所を最適化するかどうかを設定し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。voidsetResourceHttpMessageConverter(ResourceHttpMessageConverter messageConverter) 使用するResourceHttpMessageConverterを構成します。voidsetResourceRegionHttpMessageConverter(ResourceRegionHttpMessageConverter messageConverter) 使用するResourceRegionHttpMessageConverterを構成します。voidsetResourceResolvers(ListSE<ResourceResolver> resourceResolvers) 使用するResourceResolversのリストを構成します。voidsetResourceTransformers(ListSE<ResourceTransformer> resourceTransformers) 使用するResourceTransformersのリストを構成します。voidsetUrlPathHelper(UrlPathHelper urlPathHelper) リクエストを静的リソースにマップするために使用されるUrlPathHelperへの参照を提供します。voidsetUseLastModified(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()による初期化後にのみ完全に初期化されることに注意してください。注意 : 場所のリストは、実際には存在しない場所を除外するようにフィルタリングされる場合があります。そのため、このメソッドから返されるリストは、指定されたすべての場所のサブセットになる可能性があります。
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
インターフェースからコピーされた説明:EmbeddedValueResolverAwareStringValueResolver を設定して、埋め込まれた定義値の解決に使用します。- 次で指定:
- インターフェース
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- リソースのメディア型- 例外:
IOExceptionSE- ヘッダーの設定中にエラーが発生した場合
toString