猿问

Spring Boot 不提供静态内容(angular-cli)以在 tomcat 上提供应用程序

我正在努力解决一个问题,即 spring-boot 没有在 8080 上提供前端文件(通过 angular 创建)。我运行ng build将 .ts ng 组件文件转换为 .js 并在 outputPath:/resource/static 文件夹中生成(我在 angular.json 文件中设置 outputPath)。创建了一个控制器来从资源/静态提供内容。


    @Controller

    public class AppController {

        @GetMapping("/")

        public String index() {

            return "index";

        }

     }

主类(src/mainjava/webapp/app):


@Configuration

@EnableAutoConfiguration

@ComponentScan({"webapp"})

public class Application extends WebMvcAutoConfiguration {


    public static void main(String[] args) {

    SpringApplication app = new SpringApplication(Application.class);

    app.run(args);

}

}

Ranng build --base-href .生成的文件如下图所示。


索引.html:


<!doctype html>

<html>

<head>

  <meta charset="utf-8">

  <title>Welcome app</title>

  <base href="/">


  <meta name="viewport" content="width=device-width, initial-scale=1">

  <link rel="icon" type="image/x-icon" href="favicon.ico">

</head>

<body>

  <app-root></app-root>

<script type="text/javascript" src="runtime.js"></script><script type="text/javascript" src="polyfills.js"></script><script type="text/javascript" src="styles.js"></script><script type="text/javascript" src="vendor.js"></script><script type="text/javascript" src="main.js"></script></body>

</html>

注意:这是一个gradle项目。前端代码位于:src/main/java/webapp/frontend dir


/resources 中的 Application.yml


server:

  servlet:

    context-path: /

  port: 8080

我什至尝试在 /resources 下添加 html 文件,以查看 tomcat 是否提供此文件夹中的任何内容。我也无法访问 page1.html,因此不确定 angular/ng 内容有何不同,以至于在 tomcat 启动并运行时它无法提供服务。


慕桂英546537
浏览 133回答 3
3回答

繁花不似锦

这是因为您正在使用隐式包含@ResponseBody 的@RestController 注释。您必须使用 @Controller for Spring boot 来自动加载 html 模板。@Controllerpublic class AppController {&nbsp; &nbsp; @GetMapping("/")&nbsp; &nbsp; public String index() {&nbsp; &nbsp; &nbsp; &nbsp; return "index";&nbsp; &nbsp; }&nbsp;}

UYOU

在 Controller 方法上尝试将 @RequestMapping 注释放在一个建议中像这样:@Controller@RequestMapping("/")public class AppController{&nbsp;&nbsp;}在 ComponentScan (basepackages{"com.packagename of modal classes"})
随时随地看视频慕课网APP

相关分类

Java
我要回答