Spring启动不会将文件夹请求映射到`index.html`文件

时间:2015-02-10 16:53:42

标签: java static spring-boot

我的static文件夹包含以下结构:

  

的index.html
  文档/ index.html中

Spring Boot正确地将请求/映射到index.html。但它没有将/docs/请求映射到/docs/index.html/docs/index.html请求正常工作)。

如何将文件夹/子文件夹请求映射到适当的index.html文件?

4 个答案:

答案 0 :(得分:20)

您可以手动添加视图控制器映射以使其工作:

@Configuration
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/docs").setViewName("redirect:/docs/");
        registry.addViewController("/docs/").setViewName("forward:/docs/index.html");
    super.addViewControllers(registry);
    }
}

如果请求/docs(没有斜杠),第一个映射会导致Spring MVC向客户端发送重定向。如果您在/docs/index.html中有相对链接,则必须这样做。第二个映射在内部将任何请求转发到/docs/(不向客户端发送重定向)到index.html子目录中的docs

答案 1 :(得分:2)

它不是Spring Boot映射到index.html它是servlet引擎(它是一个欢迎页面)。只有一个欢迎页面(根据规范),目录浏览不是容器的功能。

答案 2 :(得分:0)

在Java 8引入Default Methods in Interfaces之后,WebMvcConfigurerAdapter在Spring 5 / Spring Boot 2中已被弃用

使用它现在将引发the warning

  

不建议使用WebMvcConfigurerAdapter类型

因此,要使@hzpz's solution重新工作,我们需要进行如下更改:

@Configuration
public class CustomWebMvcConfigurer implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/docs").setViewName("redirect:/docs/");
        registry.addViewController("/docs/").setViewName("forward:/docs/index.html");
    }
}

答案 3 :(得分:-1)

默认情况下,Spring boot show index.html。

但是index.html应该是 在 / resource / static或 /公共

示例:

https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-static