为了账号安全,请及时绑定邮箱和手机立即绑定

Spring 5 添加静态文件目录webapp

Spring 5 添加静态文件目录webapp

摇曳的蔷薇 2023-05-10 16:58:28
我有一个 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 文件夹。


查看完整回答
反对 回复 2023-05-10
?
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/"); // 

}


查看完整回答
反对 回复 2023-05-10
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信