提供静态html文件,省略url中的.html扩展名

ygl*_*odt 5 spring-boot

通过提供来自的静态html / css / js资源src/main/resources/static的好方法,是否可以使用某种形式的url抽象?

确切地说,我想.html从网址中删除结尾。

Ser*_*hko 3

返回不带扩展名的 html 静态文件与从任何模板引擎(jsp、theamleaf、freemarker)返回视图名称相同,这里您不需要对视图文件运行任何模板处理,只需按原样返回它。

将以下代码添加到您的 Spring 配置中:

@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
    InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
    internalResourceViewResolver.setPrefix("pages/");
    internalResourceViewResolver.setSuffix(".html");
    return internalResourceViewResolver;
}
Run Code Online (Sandbox Code Playgroud)

请注意,/pages文件夹应该位于您的 内部ResourceLocation ,这意味着ResourceLocation + "/pages/" + pageName.html在浏览器中应该为您提供所需的文件(如果您已经配置了静态文件服务,那么找到您的 ResourceLocation 不会有问题,请检查addResourceHandlersWebMvcConfigurer 中的方法)

现在在您的 WebMvcConfigurer 中您可以添加:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("index");
    registry.addViewController("/admin").setViewName("admin");
    registry.addViewController("/contact").setViewName("contact");
    registry.addViewController("/error").setViewName("index");
}
Run Code Online (Sandbox Code Playgroud)

或者只是使用它,就像在 MVC 控制器中的常用视图解析器中使用它一样

@GetMapping("/")
public String greeting() {
    return "index";
}
Run Code Online (Sandbox Code Playgroud)