猿问

Spring 5 添加静态文件目录webapp

我有一个 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

@EnableWebMvc

public class WebConfig implements WebMvcConfigurer {


    @Override

    public void addResourceHandlers(ResourceHandlerRegistry registry){

        registry.addResourceHandler("/webapp/**")

        .addResourceLocations("/js", "css", "img")

       .setCachePeriod(31556926);

    }

}

但是如果将这些文件放在 webapp 下不起作用,我可以理解将它们移动到 /resources 如果这是标准的做事方式。


所以,如果我能得到任何帮助,那会很好。只要有效,我都可以接受。谢谢!


摇曳的蔷薇
浏览 129回答 2
2回答

素胚勾勒不出你

尝试使用 resources/static 文件夹来提供您的视图文件。并将以下配置添加到您的 WebMvcConfigurer:@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {    registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");}它将映射“/”URL 中请求的所有静态文件以重定向到 resources/static 文件夹。

Smart猫小萌

选项 1 是可行的方法,将您的文件夹放在资源目录下(根据需要命名):src/main/java/resources    myStaticResourcesFolder        css        js        img然后就这样做:@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {    registry.addResourceHandler("/**") // map to whatever url you need        .addResourceLocations("myStaticResourcesFolder/"); // }
随时随地看视频慕课网APP

相关分类

Java
我要回答