public class ResourceHttpRequestHandler extends WebContentGenerator implements HttpRequestHandler, EmbeddedValueResolverAware, InitializingBean, CorsConfigurationSource
HttpRequestHandler
プロパティ "locations" および "locationValues" は、このハンドラーが静的リソースを提供できる場所を受け入れます。これは、Web アプリケーションのルートからの相対的なもの、またはクラスパスからの相対的なものです。"classpath:/META-INF/public-web-resources/"。jar ファイルで .js、.css などのリソースを便利にパッケージ化して提供できます。
このリクエストハンドラーは、resourcesResolver
および resourceTransformer
チェーンで構成して、提供されるリソースの任意の解決と変換をサポートすることもできます。デフォルトでは、PathResourceResolver
は設定された「場所」に基づいてリソースを単に検索します。アプリケーションは、URL にあるバージョンのリソースの URL を解決および準備できる VersionResourceResolver
などの追加のリゾルバーおよびトランスフォーマーを構成できます。
また、このハンドラーは Last-Modified
ヘッダー(存在する場合)を適切に評価するため、304
ステータスコードが適切に返され、クライアントによってすでにキャッシュされているリソースの不要なオーバーヘッドが回避されます。
HEADER_CACHE_CONTROL, METHOD_GET, METHOD_HEAD, METHOD_POST
コンストラクターと説明 |
---|
ResourceHttpRequestHandler() |
修飾子と型 | メソッドと説明 |
---|---|
void | afterPropertiesSet() |
ContentNegotiationManager | getContentNegotiationManager() 使用すべきではありません。 5.2.4 現在 |
CorsConfiguration | getCorsConfiguration(HttpServletRequestEE request) 指定された CORS 設定を返します。 |
ListSE<Resource> | getLocations() setLocationValues を介して提供される文字列ベースの場所と setLocations を介して提供される事前解決済みの Resource の場所の両方を含む、Resource の場所の構成済み List を返します。 |
protected MediaType | getMediaType(HttpServletRequestEE request, Resource resource) 指定されたリクエストのメディア型とそれに一致するリソースを決定します。 |
MapSE<StringSE, MediaType> | getMediaTypes() configured メディア型を返します。 |
protected Resource | getResource(HttpServletRequestEE request) |
ResourceHttpMessageConverter | getResourceHttpMessageConverter() 構成済みのリソースコンバーターを返します。 |
ResourceRegionHttpMessageConverter | getResourceRegionHttpMessageConverter() 構成済みのリソース領域コンバーターを返します。 |
ListSE<ResourceResolver> | getResourceResolvers() 設定されたリソースリゾルバーのリストを返します。 |
ListSE<ResourceTransformer> | getResourceTransformers() 設定済みのリソーストランスフォーマのリストを返します。 |
UrlPathHelper | getUrlPathHelper() 構成された UrlPathHelper 。 |
void | handleRequest(HttpServletRequestEE request, HttpServletResponseEE response) リソースリクエストを処理します。 |
protected void | initAllowedLocations() 構成されたリソースリゾルバーの中から PathResourceResolver を探し、そのクラスで構成された locations と一致するように allowedLocations プロパティ(空の場合)を設定します。 |
protected PathExtensionContentNegotiationStrategy | initContentNegotiationStrategy() 使用すべきではありません。 5.2.4 の時点で、このメソッドは null を返し、サブクラスが実際のインスタンスを返す場合、インスタンスはメディア型マッピングのソースとしてのみ使用されます(含まれている場合)。代わりに setMediaTypes(Map) を使用してください。動作を変更する必要がある場合は、getMediaType(HttpServletRequest, Resource) をオーバーライドできます。 |
protected boolean | isInvalidPath(StringSE path) 無効なリソースパスを識別します。 |
boolean | isOptimizeLocations() 起動時の存在チェックを通じて指定された場所を最適化するかどうかを返し、存在しないディレクトリを事前にフィルタリングして、すべてのリソースアクセスでチェックする必要がないようにします。 |
boolean | isUseLastModified() 静的リソースを提供するときに、 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 を設定して、埋め込まれた定義値の解決に使用します。 |
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 レスポンスヘッダーを駆動するかどうかを設定します。 |
StringSE | toString() |
applyCacheControl, applyCacheSeconds, applyCacheSeconds, cacheForSeconds, cacheForSeconds, checkAndPrepare, checkAndPrepare, checkRequest, getAllowHeader, getCacheControl, getCacheSeconds, getSupportedMethods, getVaryByRequestHeaders, isAlwaysMustRevalidate, isRequireSession, isUseCacheControlHeader, isUseCacheControlNoStore, isUseExpiresHeader, prepareResponse, preventCaching, setAlwaysMustRevalidate, setCacheControl, setCacheSeconds, setRequireSession, setSupportedMethods, setUseCacheControlHeader, setUseCacheControlNoStore, setUseExpiresHeader, setVaryByRequestHeaders
getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext
getApplicationContext, getMessageSourceAccessor, initApplicationContext, obtainApplicationContext, requiredContextClass, setApplicationContext
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
public void setLocationValues(ListSE<StringSE> locations)
例: {"/"
、"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"
)。
setLocations(List)
public ListSE<Resource> getLocations()
setLocationValues
を介して提供される文字列ベースの場所と setLocations
を介して提供される事前解決済みの Resource
の場所の両方を含む、Resource
の場所の構成済み List
を返します。 返されるリストは、afterPropertiesSet()
による初期化後にのみ完全に初期化されることに注意してください。
注意 : 5.3.11 の時点で、場所のリストは実際には存在しない場所を除外するようにフィルタリングされる可能性があるため、このメソッドから返されるリストは、指定されたすべての場所のサブセットである可能性があります。setOptimizeLocations(boolean)
を参照してください。
public void setResourceResolvers(@Nullable ListSE<ResourceResolver> resourceResolvers)
ResourceResolvers
のリストを構成します。 デフォルトでは、PathResourceResolver
が構成されています。このプロパティを使用する場合、PathResourceResolver
を最後のリゾルバーとして追加することをお勧めします。
public ListSE<ResourceResolver> getResourceResolvers()
public void setResourceTransformers(@Nullable ListSE<ResourceTransformer> resourceTransformers)
ResourceTransformers
のリストを構成します。デフォルトでは、使用するトランスフォーマは構成されていません。
public ListSE<ResourceTransformer> getResourceTransformers()
public void setResourceHttpMessageConverter(@Nullable ResourceHttpMessageConverter messageConverter)
ResourceHttpMessageConverter
を構成します。 デフォルトでは、ResourceHttpMessageConverter
が構成されます。
@Nullable public ResourceHttpMessageConverter getResourceHttpMessageConverter()
public void setResourceRegionHttpMessageConverter(@Nullable ResourceRegionHttpMessageConverter messageConverter)
ResourceRegionHttpMessageConverter
を構成します。 デフォルトでは、ResourceRegionHttpMessageConverter
が構成されます。
@Nullable public ResourceRegionHttpMessageConverter getResourceRegionHttpMessageConverter()
@DeprecatedSE public void setContentNegotiationManager(@Nullable ContentNegotiationManager contentNegotiationManager)
ContentNegotiationManager.getMediaTypeMappings()
から取得したマッピングで setMediaTypes(Map)
を使用することを優先して、5.2.4 以降。ContentNegotiationManager
を設定して、提供されているリソースのメディア型を決定します。マネージャーにパス拡張子戦略が含まれている場合、登録されているファイル拡張子がチェックされます。@Nullable @DeprecatedSE public ContentNegotiationManager getContentNegotiationManager()
public void setMediaTypes(MapSE<StringSE,MediaType> mediaTypes)
Resource
のファイル名から抽出されたファイル拡張子と対応するメディア型の間にマッピングを追加して、レスポンスに設定します。 マッピングは ServletContext.getMimeType(String)
EE または MediaTypeFactory.getMediaType(Resource)
を介して別の方法で決定されるため、通常、このメソッドを使用する必要はありません。
mediaTypes
- メディア型のマッピング public MapSE<StringSE,MediaType> getMediaTypes()
configured
メディア型を返します。public void setCorsConfiguration(CorsConfiguration corsConfiguration)
デフォルトでは、これはクロスオリジンリクエストを許可するように設定されていません。
@Nullable public CorsConfiguration getCorsConfiguration(HttpServletRequestEE request)
CorsConfigurationSource
の getCorsConfiguration
CorsConfiguration
、または存在しない場合は null
public void setUrlPathHelper(@Nullable UrlPathHelper urlPathHelper)
UrlPathHelper
への参照を提供します。これは、デコードされているかどうかなど、ルックアップパスに関する情報を導き出すのに役立ちます。@Nullable public UrlPathHelper getUrlPathHelper()
UrlPathHelper
。public void setUseLastModified(boolean useLastModified)
Resource.lastModified()
を確認し、この情報を使用して "Last-Modified"
HTTP レスポンスヘッダーを駆動するかどうかを設定します。このオプションはデフォルトで有効になっており、静的ファイルのメタデータを無視する必要がある場合はオフにする必要があります。
public boolean isUseLastModified()
Resource.lastModified()
情報を使用して HTTP レスポンスを駆動するかどうかを返します。public void setOptimizeLocations(boolean optimizeLocations)
デフォルトは false
です。これは、ディレクトリの存在を事前に公開できないディレクトリエントリのない zip ファイルに対する防御のためです。ディレクトリエントリとの一貫した jar レイアウトの場合に最適化されたアクセスのために、このフラグを true
に切り替えます。
public boolean isOptimizeLocations()
public void setEmbeddedValueResolver(StringValueResolver resolver)
EmbeddedValueResolverAware
EmbeddedValueResolverAware
の setEmbeddedValueResolver
public void afterPropertiesSet() throws ExceptionSE
InitializingBean
BeanFactoryAware
、ApplicationContextAware
などを満たした後、包含 BeanFactory
によって呼び出されます。このメソッドにより、Bean インスタンスは、すべての Bean プロパティが設定されたときに、その全体的な構成の検証と最終的な初期化を実行できます。
InitializingBean
の afterPropertiesSet
ExceptionSE
- 構成の誤り(必須プロパティの設定の失敗など)の場合、またはその他の理由で初期化が失敗した場合 protected void initAllowedLocations()
PathResourceResolver
を探し、そのクラスで構成された locations
と一致するように allowedLocations
プロパティ(空の場合)を設定します。@Nullable @DeprecatedSE protected PathExtensionContentNegotiationStrategy initContentNegotiationStrategy()
null
を返します。サブクラスが実際のインスタンスを返す場合、そのインスタンスはメディア型マッピングのソースとしてのみ使用されます(含まれている場合)。代わりに setMediaTypes(Map)
を使用してください。動作を変更する必要がある場合は、getMediaType(HttpServletRequest, Resource)
をオーバーライドできます。public void handleRequest(HttpServletRequestEE request, HttpServletResponseEE response) throws ServletExceptionEE, IOExceptionSE
設定された場所のリストでリクエストされたリソースの存在を確認します。リソースが存在しない場合、404
レスポンスがクライアントに返されます。リソースが存在する場合、Last-Modified
ヘッダーの存在についてリクエストがチェックされ、その値は指定されたリソースの最終変更タイムスタンプと比較され、Last-Modified
値が大きい場合は 304
ステータスコードが返されます。リソースが Last-Modified
値よりも新しい場合、またはヘッダーが存在しない場合、リソースのコンテンツリソースは、キャッシュヘッダーが 1 年後に期限切れになるように設定されたレスポンスに書き込まれます。
HttpRequestHandler
の handleRequest
request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス ServletExceptionEE
- 一般的なエラーの場合 IOExceptionSE
- I/O エラーの場合 @Nullable protected Resource getResource(HttpServletRequestEE request) throws IOExceptionSE
protected StringSE processPath(StringSE path)
デフォルトの実装は次のものに置き換わります。
" / // foo/bar"
は "/foo/bar"
になります。protected boolean isInvalidPath(StringSE path)
StringUtils.cleanPath(java.lang.String)
の呼び出し後の "../" を含むパス。valid URL
を表すパス、または先頭のスラッシュが削除された後のパスを表すパス。注意 : この方法では、先頭の重複する "/" または制御文字(空白など)が削除され、パスが単一の "/" で予測どおりに開始するか、パスが 1 つもないことが想定されています。
path
- 検証するパス true
、そうでない場合は false
@Nullable protected MediaType getMediaType(HttpServletRequestEE request, Resource resource)
request
- 現在のリクエスト resource
- チェックするリソース null
protected void setHeaders(HttpServletResponseEE response, Resource resource, @Nullable MediaType mediaType) throws IOExceptionSE
response
- 現在のサーブレットレスポンス resource
- 特定されたリソース (非 null
)mediaType
- リソースのメディア型 (非 null
)IOExceptionSE
- ヘッダーの設定中にエラーが発生した場合 public StringSE toString()
ObjectSE
の toStringSE