Java Spring Boot: как сопоставить корень приложения ("/") с индексом.HTML-код?
Я новичок в Java и весной.
Как я могу сопоставить мой корень приложения http://localhost:8080/
статический index.html
?
Если я перейду к http://localhost:8080/index.html
его работает нормально.
моя структура приложения :
мой configWebConfig.java
выглядит так:
@Configuration
@EnableWebMvc
@ComponentScan
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/");
}
}
Я пытался добавить registry.addResourceHandler("/").addResourceLocations("/index.html");
но ничего не получается.
6 ответов:
это сработало бы из коробки, если бы вы не использовали
@EnableWebMvc
Примечание. Когда вы это делаете, вы отключаете все то, что Spring Boot делает для вас вWebMvcAutoConfiguration
. Вы можете удалить эту аннотацию, или вы можете добавить обратно контроллер вида, который вы выключили:@Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/index.html"); }
пример ответа Дэйва Сира:
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.
Spring Boot автоматически определяет индекс.html в папке public / static / webapp. Если вы написали какой-либо контроллер
@Requestmapping("/")
Он переопределит функцию по умолчанию, и она не будет показыватьindex.html
Если вы не наберетеlocalhost:8080/index.html
@Configuration @EnableWebMvc public class WebAppConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addRedirectViewController("/", "index.html"); } }
.HTML-файл должен быть отнесен ниже - src / resources / public / index.html или src / resources / static / index.формат html если оба местоположения определены, то какой первый индекс происходит.html будет звонить из этого каталога.
исходный код выглядит так -
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); } }