我有一个 Spring 5(不是 Spring Boot)Web 应用程序。我有一个输出 html 的控制器。我输出一个 HTML 字符串,它可以工作,但是 JS 内容的相对路径不起作用。我将按如下方式布置我的结构:src main java resources webapp css js img WEB-INF index.html test java resources当我输出我的 html 文本时,找不到所有相关位置:如果我调用: http://localhost:8080/myapp/controller ?{some parameters} 我会期望 http://localhost:8080/myapp/js/ myjsfile.js 会在那里。当我构建和部署 WAR 时,展开的 WAR 文件包含所有正确的代码。所以我希望文件在那里并找到。但是,根据我一直在阅读的内容,我希望可以以不同的方式提供静态文件。所以,我有两个问题:1) 从 Spring 5 Web 应用程序提供静态文件的标准方式是什么?我是否以这种方式更改结构: src main java resources static css js img webapp WEB-INF index.html test java resources然后我假设我必须这样做 webconfig: @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry){ registry.addResourceHandler("/resources/**") .addResourceLocations("static/js", "static/css", "static/img") .setCachePeriod(31556926); }}2) 或者,我可以使用现有结构然后更改 WebConfig 以添加这些静态位置,如下所示:@Configuration@EnableWebMvcpublic class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry){ registry.addResourceHandler("/webapp/**") .addResourceLocations("/js", "css", "img") .setCachePeriod(31556926); }}但是如果将这些文件放在 webapp 下不起作用,我可以理解将它们移动到 /resources 如果这是标准的做事方式。所以,如果我能得到任何帮助,那会很好。只要有效,我都可以接受。谢谢!
2 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
尝试使用 resources/static 文件夹来提供您的视图文件。并将以下配置添加到您的 WebMvcConfigurer:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
}
它将映射“/”URL 中请求的所有静态文件以重定向到 resources/static 文件夹。
Smart猫小萌
TA贡献1911条经验 获得超7个赞
选项 1 是可行的方法,将您的文件夹放在资源目录下(根据需要命名):
src/main/java/resources
myStaticResourcesFolder
css
js
img
然后就这样做:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**") // map to whatever url you need
.addResourceLocations("myStaticResourcesFolder/"); //
}
添加回答
举报
0/150
提交
取消