Spring MVC 静态资源

2020-07-30 18:07 更新

此选项提供了一种从基于资源的位置列表中提供静态资源的便捷方法。

在下一个示例中,给定一个以 开头的请求,相关路径用于查找和提供相对于 Web 应用程序根下的静态资源或 下的类路径。资源在将来一年到期时提供,以确保浏览器缓存的最大使用量和浏览器提出的 HTTP 请求的减少。还计算标头,如果存在,则返回状态代码。/resources/public/staticLast-Modified304

以下列表显示了如何使用 Java 配置实现:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
            .addResourceLocations("/public", "classpath:/static/")
            .setCachePeriod(31556926);
    }
}

下面的示例演示如何在 XML 中实现相同的配置:

<mvc:resources mapping="/resources/**" location="/public/">
    <mvc:resource-chain resource-cache="true">
        <mvc:resolvers>
            <mvc:version-resolver>
                <mvc:content-version-strategy patterns="/**"/>
            </mvc:version-resolver>
        </mvc:resolvers>
    </mvc:resource-chain>
</mvc:resources>

然后,您可以使用 重写 URL 并应用解析器和变压器,例如插入版本。MVC 配置提供 bean,以便可以注入其他 bean。您还可以使用for-Thymeleaf、jsp、FreeMarker和其他使用URL标记的

ResourceUrlProviderResourceUrlProviderResourceUrlEncodingFilterHttpServletResponse#encodeURL

请注意,在同时使用这两种资源(例如,用于提供 gzipped 或 Brotli 编码的资源) 时,必须按此顺序注册它们。这确保了基于内容的版本总是可靠地计算,基于未编码的文件EncodedResourceResolverVersionResourceResolver

Webjar也通过支持,当库出现在类路径上时,它会自动注册。解析器可以重写url以包含jar的版本,也可以与没有版本 - 的传入url相匹配,例如:

WebJarsResourceResolverorg.webjars:webjars-locator-core/jquery/jquery.min.js/jquery/1.2.0/jquery.min.js


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号