Spring Boot - 如何为指定根目录中的多个路由提供一个静态 html 文件

Posted

技术标签:

【中文标题】Spring Boot - 如何为指定根目录中的多个路由提供一个静态 html 文件【英文标题】:Spring Boot - how to serve one static html file for multiple routes in specified root 【发布时间】:2016-08-06 22:11:48 【问题描述】:

我需要为指定根(as example '/main/\**') 中的所有路由提供静态html 文件(/src/main/resources/static/folder/index.html)。我尝试使用@RequestMapping("/main/**") 注释控制器方法,但它仅适用于'/main' 路由,不适用于'/main/foo''/main/foo/bar' 等...

那么,我如何在 Spring Boot 中做到这一点?

【问题讨论】:

这是通过添加一个视图控制器来完成的,如下所述:***.com/questions/27381781/…。根据 spring javadoc 文档docs.spring.io/spring/docs/current/javadoc-api/org/…,您可以从具体路径或模式进行映射,这正是您所需要的。 这很奇怪,它似乎对我有用 【参考方案1】:

我找到了这个解决方案:

// application.properties
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.html


// Controller for index.html
@Controller
public class IndexController 

    @RequestMapping("/login", "/main/**")
    public String index() 
        return "index";
    

【讨论】:

这对我有用,另外只是想加入我用@SpringBootApplication注释了另一个主应用程序类并将我的静态角度应用程序放在资源\公共文件夹中【参考方案2】:

您必须添加/编辑配置对象。

这是我们的做法:

@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter 
    public static final String INDEX_VIEW_NAME = "forward:index.html";



    public void addViewControllers(final ViewControllerRegistry registry) 
        registry.addViewController("/").setViewName(INDEX_VIEW_NAME);
        registry.addViewController("/login").setViewName(INDEX_VIEW_NAME);
        registry.addViewController("/logout").setViewName(INDEX_VIEW_NAME);
    

【讨论】:

以上是关于Spring Boot - 如何为指定根目录中的多个路由提供一个静态 html 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何为非Spring Boot的Java应用程序指定外部配置文件

如何为 Spring Boot RESTful Web 服务配置多级身份验证?

如何为 Spring Boot 启动器拆分库中的代码

如何为我的 Spring Boot 控制器执行单元测试?

如何为 Spring Boot 应用程序的 gradle 构建设置活动配置文件?

如何为 Spring Boot Rest 使用自定义异常?