저는 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
도.
그리고 이것은 내 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 등입니다.
그것이 많은 사람들을 도울 수 있기를 바랍니다.