我的static
文件夹包含以下结构:
的index.html
文档/ index.html中
Spring Boot正确地将请求/
映射到index.html
。但它没有将/docs/
请求映射到/docs/index.html
(/docs/index.html
请求正常工作)。
如何将文件夹/子文件夹请求映射到适当的index.html
文件?
答案 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