我正在尝试使用Mvc和AngularJs创建一个Spring Boot。我修改了我的应用程序的View Resolver,因此我可以指向我的应用程序以查看" WEB-INF / pages /"我的静态html文件的文件夹。现在在html文件中,我通过使用webjars依赖
来声明我的AngularJs库的源代码<script src="webjars/angularjs/1.5.5/angular.min.js"></script>
我知道为了完成这项工作,我必须在应用程序的ResourceHandlerRegistry上声明webjars libray的类路径,所以在我的配置文件中我只添加了这行代码
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
添加此行后,我的代码以某种方式工作,但让我感到好奇的是关于我的html文件中的这一行
<script src="resources/js/angular/app.js"></script>
我注意到在Spring MVC应用程序上,为了让Spring检测webapp的资源文件夹下的Javascript文件,我们必须在ResourceHandlerRegistry
上声明该文件夹就像这样
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
但是我还没有在我的Spring Boot ResourceHandlerRegistry
上声明我的webapp资源文件夹,但应用程序仍然可以看到我的app.js文件,我的AngularJs代码仍然有效。这是我的应用程序的文件结构
src
|--main
|--java
|--resources
|--webapp
|--resources
|--js
|--angular
|--app.js
|--WEB-INF
|--index.html
答案 0 :(得分:4)
这就是Spring引导Web静态工作的方式。默认情况下,您应该将您的js,image,css放在resources / static中。如果您使用百里香,请将模板放入资源中。样品如下。
这就是你打电话的方式,注意../ ..实际上是去/资源:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"
href="../../css/bootstrap.min.css" />
<link rel="stylesheet" th:href="@{/css/signin.css}"
href="../../css/signin.css" />
</head>
OP给出文件结构后的UPDATE: 位于webapp / resources的资源是spring mvc的默认静态文件夹(不是spring boot - 请参阅this blog)。
Spring boot的静态文件夹位于(参考Spring IO Blog):