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 automatically detects index.html in public/static/webapp folder. If you have written any controller @Requestmapping("/")
it will override the default feature and it will not show the index.html
unless you type localhost:8080/index.html
@Configuration
@EnableWebMvc
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addRedirectViewController("/", "index.html");
}
}
Update: Jan-2019
First create public folder under resources and create index.html file. Use WebMvcConfigurer instead of WebMvcConfigurerAdapter.
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");
}
}
Inside Spring Boot
, I always put the webpages inside a folder like public
or webapps
or views
and place it inside src/main/resources
directory as you can see in application.properties
also.
and this is my 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
as soon you put the url like servername:15800
and this request received by Spring Boot occupied Servlet dispatcher it will exactly search the index.html
and this name will in case sensitive as the spring.mvc.view.suffix
which would be html, jsp, htm etc.
Hope it would help manyone.
- index.html file should come under below location - src/resources/public/index.html OR src/resources/static/index.html if both location defined then which first occur index.html will call from that directory.
The source code looks like -
package com.bluestone.pms.app.boot; import org.springframework.boot.Banner; import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @EnableAutoConfiguration @ComponentScan(basePackages = {"com.your.pkg"}) public class BootApplication extends SpringBootServletInitializer { /** * @param args Arguments */ public static void main(String[] args) { SpringApplication application = new SpringApplication(BootApplication.class); /* Setting Boot banner off default value is true */ application.setBannerMode(Banner.Mode.OFF); application.run(args); } /** * @param builder a builder for the application context * @return the application builder * @see SpringApplicationBuilder */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return super.configure(builder); } }
I had the same problem. Spring boot knows where static html files are located.
- Add index.html into resources/static folder
- Then delete full controller method for root path like @RequestMapping("/") etc
- Run app and check http://localhost:8080 (Should work)
If you use the latest spring-boot 2.1.6.RELEASE
with a simple @RestController
annotation then you do not need to do anything, just add your index.html
file under the resources/static
folder:
project
├── src
├── main
└── resources
└── static
└── index.html
Then hit the URL http://localhost:8080. Hope that it will help everyone.
참고 URL : https://stackoverflow.com/questions/27381781/java-spring-boot-how-to-map-my-app-root-to-index-html
'Programing' 카테고리의 다른 글
operator <<를 친구 또는 멤버 함수로 구현해야합니까? (0) | 2020.07.17 |
---|---|
현재 ASP.NET 세션이 null 인 경우 어떻게해야합니까? (0) | 2020.07.17 |
CSS 또는 Javascript를 사용하여 웹 페이지에서 커서를 숨길 수 있습니까? (0) | 2020.07.17 |
쿠키를 서버 측에서 삭제하는 올바른 방법 (0) | 2020.07.17 |
현재로드 된 어셈블리를 어떻게 반복합니까? (0) | 2020.07.17 |