我一直试图让这个工作,但几个小时后没有运气。
我的结构是这样的:
src
└─── main
├─── java
└─── resources
├─── META-INF
│ └─── resources
│ └─── bootstrap
│ ├─── css
│ └─── js
├─── templates
│ └─── index.html
└─── application.properties
这是WebConfig类:
@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
}
如果我使用链接到网络资源,它可以工作:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"></link>
如果我试图包含静态资源,它就无法运行:
<link type="text/css" rel="stylesheet" href="../../../resources/bootstrap/css/bootstrap.min.css"
data-th-href="@{/resources/bootstrap/css/bootstrap.min.css}" />
非常感谢任何帮助。
谢谢
答案 0 :(得分:5)
如果您的应用程序是,请不要使用
src/main/webapp
目录 打包成一个罐子。虽然这个目录是一个通用标准,但它 只会与战争包装一起使用,它将被默默地忽略 如果你生成一个jar,大多数构建工具。
/src/main/resources/
):默认情况下,Spring Boot将提供目录中的静态内容 名为
/static
(或/public
或/resources
或/META-INF/resources
)。
我建议您将webapp
个文件重新组织为/src/main/resources/static
访问静态文件时,静态文件夹(如上所列)是路径的根目录。
因此,要访问您的css文件:
META-INF/resources/bootstrap/css/bootstrap.min.css
http://localhost:8080/bootstrap/css/bootstrap.min.css
<link type="text/css" rel="stylesheet" href="bootstrap/css/bootstrap.min.css"/>
<link type="text/css" rel="stylesheet" data-th-href="@{bootstrap/css/bootstrap.min.css}" />
答案 1 :(得分:1)
问题已经解决。不幸的是,问题不是来自上述任何一个,而是来自映射到“/”的控制器。如果您遇到同样的问题,请确保没有任何映射到“/”的内容。现在可以通过URL访问所有资源。
我的新结构如下:
src
main
java
resources
static
bootstrap
css
js
templates
index.html
application.properties
这是WebConfig类:
@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
}
该链接包含在HTML中:
<link type="text/css" rel="stylesheet" href="../bootstrap/css/bootstrap.min.css"
data-th-href="@{/bootstrap/css/bootstrap.min.css}" />