如何在Spring中为Web文件夹提供服务从/ resources /中启动

时间:2019-07-12 13:54:43

标签: java spring spring-boot web directory

我需要帮助,我的Spring Boot 2 Server从第一个网站通过模板生成了其他网站(带有html,css ext ext的文件夹),但是这些网站/ html无法访问,Spring给我错误404,未找到。

我将在.jar中使用Maven构建项目

项目的总体架构是这样的:

---
 |_folder (Directory with webapps generated, NOT DELIVERED)
 . |_webapp1
 . |_webapp2
 |_src
 . |_main
 . . |_java
 . . |_resources
 . . . |_public (With first web)
 . . . |_static (Template used to generate other web site, i simply copy this directoy in other directory, doing  templateServices.copyDirectory("target/classes/static/", "folder/webapp1");
---

我尝试使用此配置,但是不起作用。

@Configuration
@EnableWebMvc
public class StaticResourceConfiguration implements WebMvcConfigurer {

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
            "classpath:/META-INF/resources/", "classpath:/resources/",
            "classpath:/static/", "classpath:/public/", FileController.uploadingDir};

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
    }
}

1 个答案:

答案 0 :(得分:1)

如果Web服务器如您所说要生成网站,则应将文件保存在Spring Boot范围之外;只是在文件系统的文件夹中。一个例子可能是:

@Configuration
@EnableWebMvc
public class AppConfig implements WebMvcConfigurer {
  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
        .addResourceHandler("/**")
        .addResourceLocations("file:/var/www/websites/");
  }
}

如果您拥有动态网站(您说它取决于用户),则可以在该方法内部获取系统中的所有用户,并在特定位置为其添加ResourceHandlers。