提问者:小点点

使用Spring Boot隐式index.html


我有一个简单的Spring Boot Starter Web应用程序。我想提供几个静态html文件。

我知道我可以使用Spring Boot提供静态文件,只需简单地将其放入我的src/main/Resources/静态子目录。

当我创建文件(例如)/静态/docs/index.html时,我可以通过http://localhost:8080/docs/index.html访问它。

我想要实现的是只需使用http://localgost:8080/docs其中索引。html是由Spring隐式添加的。

我需要通过localhost:8080/{path}路径在资源中的/静态/{path}/index.html中提供静态文件。

我知道我可以在控制器中手动创建映射,但当有许多文件要提供服务时,这就变得很烦人了。


共1个答案

匿名用户

这会有用的

@Configuration
public class AppConfig implements WebMvcConfigurer {

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

或所有静态子目录的可能解决方案(丑陋版本)

public void addViewControllers(ViewControllerRegistry registry) {
    File file;
    try {
        file = new ClassPathResource("static").getFile();
        String[] names = file.list();

        for(String name : names)
        {
            if (new File(file.getAbsolutePath() + "/" + name).isDirectory())
            {
                registry.addViewController("/" + name).setViewName("forward:/" + name +"/index.html");
            }
        }
    } catch (IOException e) {
        // TODO: handle error
        e.printStackTrace();
    }
}