使用 Spring Boot 提供单个 html 页面

Posted

技术标签:

【中文标题】使用 Spring Boot 提供单个 html 页面【英文标题】:Serving single html page with Spring Boot 【发布时间】:2017-03-10 17:14:48 【问题描述】:

我正在开发一个使用 Spring Boot Web 的简单 Spring Boot 应用程序。根据 Spring Boot 文档,我将 index.html 放入资源目录的模板子目录中。我在 application.properties 文件中定义了:

spring.mvc.view.prefix=classpath:/templates/

spring.mvc.view.suffix=.html

我的 WebMvcConfigurerAdapter 如下所示:

@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter
@Override
public void addViewControllers(ViewControllerRegistry registry) 
    registry.addViewController("/").setViewName("index");
    super.addViewControllers(registry);
   

我的问题是我似乎无法在http://localhost:8080 提供 index.html。 我收到以下错误: “javax.servlet.ServletException:无法解析名称为 'dispatcherServlet' 的 servlet 中名称为 'index' 的视图”。

如何在不使用控制器的情况下解决此问题?

亲切的问候, 戴夫

【问题讨论】:

用@Controller注释类 【参考方案1】:

为了从 Spring Boot 应用程序中提供静态内容,您只需将它们放在 src/main/resources/static 中 - 无需其他配置。

index.html转成src/main/resources/static/index.htmlapplication.properties 中删除属性 删除addViewControllers方法和@EnableWebMvc注解——实际上你可以删除整个类 通过http://localhost:8080/访问索引

【讨论】:

Cheers Maciej 但我已经尝试了上述建议,现在产生的错误是:No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'dispatcherServlet' 您是否也从配置中删除了 @EnableWebMvc 注释?我更新了答案。

以上是关于使用 Spring Boot 提供单个 html 页面的主要内容,如果未能解决你的问题,请参考以下文章

单个 Spring Boot 应用程序中的 SAML 和 Oauth2

使用 spring-boot 存储库返回单个属性

如何从 Spring Boot 提供静态 html?

Spring Boot:无法从以下候选中找到单个主类

springboot(二十):使用spring-boot-admin对spring-boot服务进行监控

Spring boot与Spring cloud之间的关系