Spring boot 在 webapp 文件夹下找不到索引.html

我从 spring.io 阅读了以下文档,它说但是当我放置索引时.html字符串下的文件刚刚呈现。目前在webapp下,我正在使用AngularJS。By default Spring Boot will serve static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath/resourcesindexindex.html

directory

MvcConfiguration

@Configuration
public class MvcConfig {

    @Bean
    InternalResourceViewResolver viewResolver(){

        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/webapp/");
        resolver.setSuffix(".html");

        return resolver;
    }

}

索引页的宁静服务

@RestController
public class IndexController {

    @RequestMapping("/")
    public String index(){
        System.out.println("Looking in the index controller.........");
        return "index";
    }

}

在我的IDE控制台上,我确实看到从IndexController打印出来的,在Chrome开发工具中的网络下,我只看到。Looking in the index controller......localhost 200

索引.html

<body>

  <!--[if lt IE 7]>
      <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
  <![endif]-->

  <div ng-view></div>

  <div>Angular seed app: v<span app-version></span></div>

答案 1

Spring Boot文档还说:

不要使用 src/main/webapp 目录,如果你的应用程序将被打包为 jar。虽然这个目录是一个通用标准,但它只适用于 war 打包,如果你生成一个 jar,大多数构建工具都会默默地忽略它。

Spring Boot非常固执己见,当您不尝试抵制默认值时效果最好。我看不出有任何理由将您的文件放在.只需用于您的前端资产。这是最常见的地方。/src/main/webapp/src/main/resources/static

它将自动从根URI提供这些静态文件,而无需创建任何根级别 。事实上,您将阻止从根 URI 提供静态前端文件。根本不需要为静态文件创建。ControllerIndexControllerController

此外,你的应用不需要视图解析器。你的应用只是单页角度应用程序使用的 REST API。因此,您的 HTML 模板化位于客户端上。如果您正在执行服务器端HTML模板化(例如,使用Thymeleaf或JSP),则需要视图解析器。所以也要把那块去掉。


答案 2
@RestController
public class IndexController {

    @RequestMapping("/")
    public String index(){
        System.out.println("Looking in the index controller.........");
        return "index";
    }

}

问题在这里,你正在使用@RestController,所以在这种情况下,如果你写“返回'索引';”spring boot覆盖它只是字符串答案。您需要改用@Controller注释。


推荐