복붙노트

[SPRING] 스프링 부트가 webapp 폴더 아래에서 index.html을 찾을 수 없습니다.

SPRING

스프링 부트가 webapp 폴더 아래에서 index.html을 찾을 수 없습니다.

spring.io에서 다음 문서를 읽었을 때 기본적으로 Spring Boot는 classpath에 / static (또는 / public 또는 / resources / META-INF / resources) 디렉토리의 정적 컨텐츠를 제공하지만 내 인덱스를 넣을 때 .html 파일 / resources 아래에 문자열 인덱스가 렌더링됩니다. 현재 index.html은 webapp 아래 있으며 AngularJS를 사용하고 있습니다.

MVC 구성

@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에서 인쇄하고 크롬 개발 도구의 네트워크에서 로컬 호스트 200 만 볼 수 있습니다.

index.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. ==============================

    1.Spring Boot docs는 또한 다음과 같이 말합니다 :

    Spring Boot docs는 또한 다음과 같이 말합니다 :

    스프링 부트는 매우 독창적이며, 여러분이 디폴트에 저항하지 않을 때 가장 잘 작동합니다. / src / main / webapp에 파일을 올리는 데 어떤 이유도 보이지 않습니다. 프런트 엔드 애셋에 / src / main / resources / static을 사용하십시오. 그것은 가장 일반적인 장소입니다.

    루트 레벨 컨트롤러를 만들 필요없이 루트 URI에서 이러한 정적 파일을 자동으로 제공합니다. 실제로 IndexController는 루트 URI에서 정적 프론트 엔드 파일을 제공하지 못하게합니다. 정적 파일 용 Controller를 작성하지 않아도됩니다.

    또한 앱에 View Resolver가 필요하지 않습니다. 앱은 단일 페이지 각도 애플리케이션에서 소비하는 REST API 일뿐입니다. 따라서 HTML 템플릿은 클라이언트에 있습니다. 서버 측 HTML 템플릿 (예 : Thymeleaf 또는 JSP)을 수행하는 경우보기 확인자가 필요합니다. 그래서 그 조각도 제거하십시오.

  2. ==============================

    2.

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

    문제는 여기에 @RestController를 사용하고 있으므로이 경우 "return 'index';"라고 쓰면, 봄 부츠는 그냥 문자열 대답으로 그것을 다룹니다. 대신 @Controller 어노테이션을 사용해야합니다.

  3. from https://stackoverflow.com/questions/35968479/spring-boot-cannot-find-index-html-under-webapp-folder by cc-by-sa and MIT license