Skip to content

静态资源映射

Spring Boot会自动映射/static/public/resources等目录下的静态资源,请求的匹配顺序是优先匹配控制层(Controller)的映射,再匹配静态资源

默认开放目录:

src/main/resources/static/
src/main/resources/public/
src/main/resources/resources/
src/main/resources/META-INF/resources/
src/main/webapp // ServletContext 根路径

classpath:path:代表src/main/resources:path

file:pathfile:协议表示资源位于文件系统中,path可以是相对或者绝对路径

Vue映射

使用Vue Router的history模式,需配置所有非静态资源请求重定向到index.html

java
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
            .addResourceHandler("/**")
            .addResourceLocations("classpath:/dist/");
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 所有未匹配的路径重定向到index.html
        registry.addViewController("/{path:^(?!.*\\..*$).*}")
                .setViewName("forward:/index.html");
    }
}

配置子目录

java
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry
            .addResourceHandler("/yxx-yi/**")
            .addResourceLocations("classpath:/dist/");
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 处理以 /yxx-yi/ 开头的多级路径(且不包含文件扩展名)
        registry.addViewController("/yxx-yi/{path:^(?!.*\\..*$).*}")
                .setViewName("forward:/yxx-yi/index.html");
    }
}

访问:/yxx-yi/index即可访问到