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 89

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 будет звонить из этого каталога.
  1. исходный код выглядит так -

    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);
       }
    }
    

внутри Spring Boot, Я всегда помещаю веб-страницы в папку, как public или webapps или views и поместите его внутри