Spring boot doesn't map folder requests to `in

2019-03-23 05:48发布

I've got static folder with following structure:

index.html
docs/index.html

Spring Boot correctly maps requests / to index.html. But it doesn't map /docs/ request to /docs/index.html (/docs/index.html request works correctly).

How to map folder/subfolder requests to appropriate index.html files?

3条回答
Viruses.
2楼-- · 2019-03-23 05:56

Spring boot show index.html by default.

but index.html should be in /resource/static or /public

example:

https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-static
查看更多
放荡不羁爱自由
3楼-- · 2019-03-23 06:09

You can manually add a view controller mapping to make this work:

@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);
    }
}

The first mapping causes Spring MVC to send a redirect to the client if /docs (without trailing slash) gets requested. This is necessary if you have relative links in /docs/index.html. The second mapping forwards any request to /docs/ internally (without sending a redirect to the client) to the index.html in the docs subdirectory.

查看更多
我欲成王,谁敢阻挡
4楼-- · 2019-03-23 06:12

It's not Spring Boot mapping to index.html it's the servlet engine (it's a welcome page). There's only one welcome page (per the spec), and directory browsing is not a feature of the containers.

查看更多
登录 后发表回答