[java] Java Spring Boot : 앱 루트 (“/”)를 index.html에 매핑하는 방법은 무엇입니까?

저는 Java와 Spring을 처음 사용합니다. 내 앱 루트 http://localhost:8080/를 정적으로 매핑하려면 어떻게 index.html해야합니까? 내가 http://localhost:8080/index.html잘 작동 한다면 .

내 앱 구조는 다음과 같습니다

찌그러짐

config\WebConfig.java모습은 다음과 같습니다.

@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/");
        }
}

추가하려고 registry.addResourceHandler("/").addResourceLocations("/index.html");했지만 실패합니다.



답변

@EnableWebMvc주석을 사용하지 않았다면 즉시 사용할 수 있습니다. 그렇게 할 때 Spring Boot가 당신을 위해하는 모든 것을 끄십시오 WebMvcAutoConfiguration. 해당 주석을 제거하거나 끈 뷰 컨트롤러를 다시 추가 할 수 있습니다.

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("forward:/index.html");
}


답변

Dave Syer의 답변 예 :

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class MyWebMvcConfig {

    @Bean
    public WebMvcConfigurerAdapter forwardToIndex() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                // forward requests to /admin and /user to their index.html
                registry.addViewController("/admin").setViewName(
                        "forward:/admin/index.html");
                registry.addViewController("/user").setViewName(
                        "forward:/user/index.html");
            }
        };
    }

}


답변

스프링 부트 앱인 경우

Spring Boot는 public / static / webapp 폴더에서 index.html을 자동으로 감지합니다. 컨트롤러를 작성한 경우 @Requestmapping("/")기본 기능을 무시하고 index.html사용자가 입력하지 않으면 표시되지 않습니다localhost:8080/index.html


답변

@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController("/", "index.html");
    }

}


답변

업데이트 : 2019 년 1 월

먼저 resources 아래에 공용 폴더를 만들고 index.html 파일을 만듭니다. WebMvcConfigurerAdapter 대신 WebMvcConfigurer를 사용하십시오.

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebAppConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/index.html");
    }

}


답변

spring-boot 2.1.6.RELEASE간단한 @RestController주석으로 최신 버전을 사용하는 경우 아무것도 할 필요가 없으며 폴더 index.html아래에 파일을 추가하십시오 resources/static.

project
  ├── src
      ├── main
          └── resources
              └── static
                  └── index.html

그런 다음 URL http : // localhost : 8080을 누르십시오 . 그것이 모두에게 도움이되기를 바랍니다.


답변

내부는 Spring Boot, 나는 항상 같은 폴더 안에 웹 페이지를 넣어 public하거나 webapps또는 views내부와 장소를 src/main/resources당신이 볼 수있는 디렉토리 application.properties도.

Spring_Boot-Project-Explorer-View

그리고 이것은 내 application.properties:

server.port=15800
spring.mvc.view.prefix=/public/
spring.mvc.view.suffix=.html
spring.datasource.url=jdbc:mysql://localhost:3306/hibernatedb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.format_sql = true

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

URL을 좋아 servername:15800하고 Spring Boot 점유 된 서블릿 디스패처가 수신 한이 요청은 정확하게 검색 index.html하고이 이름은 대소 문자를 구분합니다.spring.mvc.view.suffix html, jsp, htm 등입니다.

그것이 많은 사람들을 도울 수 있기를 바랍니다.