类 PathResourceResolver

java.lang.Object
cn.taketoday.web.resource.AbstractResourceResolver
cn.taketoday.web.resource.PathResourceResolver
所有已实现的接口:
ResourceResolver

public class PathResourceResolver extends AbstractResourceResolver
A simple ResourceResolver that tries to find a resource under the given locations matching to the request path.

This resolver does not delegate to the ResourceResolverChain and is expected to be configured at the end in a chain of resolvers.

从以下版本开始:
4.0
作者:
Jeremy Grelle, Rossen Stoyanchev, Sam Brannen
  • 字段详细资料

    • allowedLocations

      @Nullable private cn.taketoday.core.io.Resource[] allowedLocations
    • urlDecode

      private boolean urlDecode
    • locationCharsets

      private final HashMap<cn.taketoday.core.io.Resource,Charset> locationCharsets
  • 构造器详细资料

    • PathResourceResolver

      public PathResourceResolver()
  • 方法详细资料

    • setAllowedLocations

      public void setAllowedLocations(@Nullable cn.taketoday.core.io.Resource... locations)
      By default when a Resource is found, the path of the resolved resource is compared to ensure it's under the input location where it was found. However sometimes that may not be the case, e.g. when CssLinkResourceTransformer resolves public URLs of links it contains, the CSS file is the location and the resources being resolved are css files, images, fonts and others located in adjacent or parent directories.

      This property allows configuring a complete list of locations under which resources must be so that if a resource is not under the location relative to which it was found, this list may be checked as well.

      By default ResourceHttpRequestHandler initializes this property to match its list of locations.

      参数:
      locations - the list of allowed locations
      另请参阅:
    • getAllowedLocations

      @Nullable public cn.taketoday.core.io.Resource[] getAllowedLocations()
    • setLocationCharsets

      public void setLocationCharsets(Map<cn.taketoday.core.io.Resource,Charset> locationCharsets)
      Configure charsets associated with locations. If a static resource is found under a URL resource location the charset is used to encode the relative path
    • setUrlDecode

      public void setUrlDecode(boolean urlDecode)
      Whether the resource-path should be decoded
      另请参阅:
    • isUrlDecode

      public boolean isUrlDecode()
      Whether to decode the request URI when determining the lookup path.
    • getLocationCharsets

      public Map<cn.taketoday.core.io.Resource,Charset> getLocationCharsets()
      Return charsets associated with static resource locations.
    • resolveResourceInternal

      protected cn.taketoday.core.io.Resource resolveResourceInternal(@Nullable RequestContext request, String requestPath, List<? extends cn.taketoday.core.io.Resource> locations, ResourceResolvingChain chain)
      指定者:
      resolveResourceInternal 在类中 AbstractResourceResolver
    • resolveUrlPathInternal

      protected String resolveUrlPathInternal(String resourcePath, List<? extends cn.taketoday.core.io.Resource> locations, ResourceResolvingChain chain)
      指定者:
      resolveUrlPathInternal 在类中 AbstractResourceResolver
    • getResource

      @Nullable private cn.taketoday.core.io.Resource getResource(String resourcePath, @Nullable RequestContext request, List<? extends cn.taketoday.core.io.Resource> locations)
    • getResource

      @Nullable protected cn.taketoday.core.io.Resource getResource(String resourcePath, cn.taketoday.core.io.Resource location) throws IOException
      Find the resource under the given location.

      The default implementation checks if there is a readable Resource for the given path relative to the location.

      参数:
      resourcePath - the path to the resource
      location - the location to check
      返回:
      the resource, or null if none found
      抛出:
      IOException
    • checkResource

      protected boolean checkResource(cn.taketoday.core.io.Resource resource, cn.taketoday.core.io.Resource location) throws IOException
      Perform additional checks on a resolved resource beyond checking whether the resources exists and is readable. The default implementation also verifies the resource is either under the location relative to which it was found or is under one of the allowed locations.
      参数:
      resource - the resource to check
      location - the location relative to which the resource was found
      返回:
      "true" if resource is in a valid location, "false" otherwise.
      抛出:
      IOException
    • isResourceUnderLocation

      private boolean isResourceUnderLocation(cn.taketoday.core.io.Resource resource, cn.taketoday.core.io.Resource location) throws IOException
      抛出:
      IOException
    • encodeOrDecodeIfNecessary

      private String encodeOrDecodeIfNecessary(String path, @Nullable RequestContext request, cn.taketoday.core.io.Resource location)
    • shouldDecodeRelativePath

      private boolean shouldDecodeRelativePath(cn.taketoday.core.io.Resource location)
    • shouldEncodeRelativePath

      private boolean shouldEncodeRelativePath(cn.taketoday.core.io.Resource location)
    • isInvalidEncodedPath

      private boolean isInvalidEncodedPath(String resourcePath)