Spring boot 如何在Spring boot中添加静态Web内容
我正在尝试使用info在spring引导服务器中添加静态web内容 我已尝试将所需的.js和.css文件添加到上一个链接所述的几个文件夹中,但不起作用: 注意:我没有创建Spring boot 如何在Spring boot中添加静态Web内容,spring-boot,Spring Boot,我正在尝试使用info在spring引导服务器中添加静态web内容 我已尝试将所需的.js和.css文件添加到上一个链接所述的几个文件夹中,但不起作用: 注意:我没有创建/static/和/public/文件夹,因为我不知道项目中的绝对路径 我还添加了addResourceHandlers方法: HTML文件中的引用如下所示: 你知道我该怎么解决吗 已更新: 更新2:尝试@jfcorugedo 不起作用。看一看,你刚才是这么说的吗 更新3:尝试@jfcorugedo,第二条建议: 我认为您
/static/
和/public/
文件夹,因为我不知道项目中的绝对路径
我还添加了addResourceHandlers
方法:
HTML文件中的引用如下所示:
你知道我该怎么解决吗
已更新:
更新2:尝试@jfcorugedo
不起作用。看一看,你刚才是这么说的吗
更新3:尝试@jfcorugedo,第二条建议:
我认为您应该使用
mydomain///resource
例如:
http://mydomain/app/js/test.js
http://mydomain/app/img/test.jpg
您可以使用应用程序上下文或仅使用相对路径编写资源:
<script src="js/bootstrap-switch.js"></script>
或
但是如果您将引导程序与webjar一起使用,那么您应该编写
<script src="/<myapp>/webjars/bootstrap/<version>/js/bootstrap-switch.js"></script>
github上有一个项目可以说明这一点
更新
我创建了一个具有以下结构的测试项目:
我可以在上访问style.css
您可以使用来帮助创建新项目
另一个选择是使用Spring工具套件或IntelliJ IDEA。
它们可以帮助您创建具有正确配置的新项目(如前一个链接)。您不需要添加addResourceHandlers方法,Spring boot在其自己的代码中执行此方法 不要将文件放在webapp文件夹中 您只需将文件放在以下目录之一:
/META-INF/resources/
/资源/
/静止的
/公共
例如,如果要加载文件js/bootstrap switch.js
,则该文件必须位于以下文件夹之一:
/META-INF/resources/js/bootstrap-switch.js
/resources/js/bootstrap-switch.js
…
我在my/src/main/resources中创建了一个META-INF/resources/js文件夹,一切正常:
我在这个文件夹中放了一个test.js文件,当我键入URL时,应用程序会给我一个js文件
确实要创建相同的文件夹层次结构吗?在根目录中的任何位置创建一个/static文件夹。这可以在你工作空间的任何地方。示例C:\mywebapp\static。将C:\mywebapp添加到运行时类路径,或者如果使用Intellij/Eclipse,则将文件夹C:\mywebapp添加为库 这不同于将静态html添加为源文件夹,这将导致在每次生成时将其复制到输出类文件夹。如果你有一个使用angular或sencha的大型web应用程序或单页应用程序,这是一种痛苦。 而是将文件夹C:\mywebapp添加为库文件夹或运行时类路径文件夹
这样做的好处是,它将允许javascript代码与spring boot rest、ajax等服务在同一主机/端口上运行,而无需处理jsonp或cors 查看
org.springframework.boot.autoconfigure.web.ResourceProperties
类,您可以看到以下代码行:
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
这意味着/META-INF/resources/
,/resources/
,静态/
和公共/
目录可用于提供静态内容
因此,您可以在resources/
目录下创建一个static/
或public/
目录,并将静态内容放在那里。可通过以下方式访问:http://localhost:8080/your-file.ext
。(假设server.port
为8080)
您可以使用application.properties
中的spring.resources.static locations
自定义这些目录
例如,通过提供此配置:
spring.resources.static-locations=classpath:/custom/
您可以使用
resources/
下的custom/
文件夹为静态文件提供服务,并通过上面的URL访问它们。尝试使用/application context/js/bootstrap-switch.jsf访问文件。对于第二次更新,您不应在src中插入META-INF。Danilo:够了,或者不行。请找到答案@ok,让我复制哪个文件夹的项目中的文件?我在/project\u name/src/main/resources/META-INF/js
和/project\u name/src/main/resources/META-INF/css
中复制了它们,但这不起作用。我用屏幕截图进行了更新。请确认这两个问题是否正确?我是否应该更改我的addResourceHandlers
?它不起作用。尝试在引用中使用js/bootstrap-switch.js和css/bootstrap-switch.css尝试将文件放在src/main/resources/static中。我在这里创建了一个新项目,这似乎是最直观的方式,我更新了测试项目的屏幕截图和一些新的建议。服务器上的绝对路径是:/project/src/main/META-INF/?或者仅仅是/project/META-INF?您必须使用这个选项:src/main/resources/META-INF/不要将资源放在src/main中,因为默认情况下,maven只识别src/main/java和src/main/resources中的文件,我也尝试了,但没有成功。服务器一如既往地给了我一个404。。。我对Spring boot的了解非常贫乏,但是,也许这些信息对我们有帮助:我与Gradle一起构建了这个项目,我使用TomCat 7,并将其作为一个Java应用程序运行。请注意,“静态”对我不起作用……但“资源”确实起作用……我说的是第二个“资源”“.aka,嵌套更深的一个。如何在运行时将C:\mywebapp添加到类路径?
<script src="/<myapp>/webjars/bootstrap/<version>/js/bootstrap-switch.js"></script>
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
spring.resources.static-locations=classpath:/custom/