it-swarm.com.de

Java Spring Boot: Wie ordne ich mein App-Root ("/") zu index.html

Ich bin neu in Java und Spring. Wie kann ich mein App-Stammverzeichnis http://localhost:8080/ einem statischen index.html zuordnen? Wenn ich zu http://localhost:8080/index.html navigiere, funktioniert es gut.

Meine App-Struktur ist:

dirs

Mein config\WebConfig.Java sieht so aus:

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

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

Ich habe versucht, registry.addResourceHandler("/").addResourceLocations("/index.html"); hinzuzufügen, aber es schlägt fehl.

101
Shoham

Wenn Sie die @EnableWebMvc-Annotation nicht verwendet hätten, hätte es sich von Anfang an bewährt. Wenn Sie dies tun, schalten Sie alle Dinge aus, die Spring Boot in WebMvcAutoConfiguration für Sie erledigt. Sie können diese Anmerkung entfernen oder den von Ihnen deaktivierten View-Controller wieder hinzufügen:

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

Ein Beispiel für die Antwort von 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");
            }
        };
    }

}
39
justin

wenn es sich um eine Spring Boot App handelt. 

Spring Boot erkennt index.html automatisch im Ordner public/static/webapp. Wenn Sie einen Controller @Requestmapping("/") geschrieben haben, überschreibt er die Standardfunktion und zeigt den index.html nur an, wenn Sie localhost:8080/index.html eingeben.

14
Krish
@Configuration  
@EnableWebMvc  
public class WebAppConfig extends WebMvcConfigurerAdapter {  

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

}
5
Rodrigo Ribeiro

In Spring Boot stelle ich die Webseiten immer in einem Ordner wie public oder webapps oder views ab und platziere sie im src/main/resources-Verzeichnis, wie Sie auch in application.properties sehen können.

 Spring_Boot-Project-Explorer-View

und das ist mein 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

sobald Sie die URL wie servername:15800 eingeben und diese von Spring Boot besetzte Servlet-Dispatcher-Anforderung erhalten hat, wird genau nach index.html gesucht, und dieser Name wird im Fall sensibel wie spring.mvc.view.suffix, dh html, jsp, htm usw.

Hoffe, es würde vielen helfen.

2
ArifMustafa
  1. die Datei "index.html" sollte unter "- .__" liegen. src/resources/public/index.html ODER src/resources/static/index.html Wenn beide Speicherorte definiert wurden, dann wird der erste index.html-Aufruf von diesem Verzeichnis aus aufgerufen.
  2. Der Quellcode sieht aus wie - 

    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);
       }
    }
    
2
Pravind Kumar

Update: Januar-2019

Erstellen Sie zuerst den öffentlichen Ordner unter den Ressourcen und erstellen Sie die index.html-Datei . Verwenden Sie den WebMvcConfigurer anstelle des 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");
    }

}
1
Sampath T