在Spring中提供静态内容-为什么我们需要addResourceLocations方法,而我们有addResourceHandler?
我想知道为什么我们有“在Spring中提供静态内容-为什么我们需要addResourceLocations方法,而我们有addResourceHandler?,spring,spring-mvc,Spring,Spring Mvc,我想知道为什么我们有“addResourceLocations”方法,而我们有“addResourceHandler”方法 例如: @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**") .addResourceLocations("/resources/css/test"); } 在这里,
addResourceLocations
”方法,而我们有“addResourceHandler
”方法
例如:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/css/test");
}
在这里,我在调用
addResourceHandler
方法时指定“/resources/**”
。然后我使用addResourceLocations
方法添加资源位置,这些资源位置应该是我在addResourceHandler
中指定的URL的子文件夹,对吗?那么,为什么addResourceHandler
本身不足以指定资源位置呢?它不是位置URL的超集吗?addResourceHandler
接受您将在查看页面中使用的URL模式
addResourceHandler(java.lang.String…pathPatterns)
添加一个资源处理程序,用于基于
指定的URL路径模式。处理程序将为每个
与指定路径模式之一匹配的传入请求
另一方面,在addResourceLocations
中指定资源的实际特定位置。Spring将查看此文件夹或位置,以解析url模式匹配的资源
addResourceLocations(java.lang.String…resourceLocations)
添加一个或多个用于提供静态内容的资源位置。每个位置必须指向一个有效的目录。倍数
位置可以指定为逗号分隔的列表,并且
将按指定的顺序检查给定资源的位置
例子
为了理解它们之间的差异,请考虑下面的例子。如果您配置
registry.addResourceHandler("/res/**")
.addResourceLocations("/resources/");
然后你可以像这样在你的视图中使用它们
<link href="res/css/main.css" rel="stylesheet" type="text/css"/>
请注意,您的ResourceHandler被配置为URL模式res/**
(您可以将其映射到其他模式),任何与此模式匹配的资源请求都将由处理程序处理
与对res/css/main.css的请求一样,SpringMVC将与该处理程序匹配,并要求该处理程序解决该问题。然后处理程序将尝试在您配置为/resources/
的实际资源位置中查找main.css
文件
更多阅读内容
- 方法细节
- 方法细节
/CSS/**
可能更有意义。例如,“这些资源位置应该是URL的子文件夹”-不。它们是服务资源的位置-即本地路径。