2014-09-26 8 views
12

Ich habe versucht, einen Weg zu finden, um die Standard-Begrüßungsseite für eine Spring-Boot-Anwendung zu ändern, die als Krieg in der Produktion eingesetzt wird, aber ich kann Ich finde einen Weg, es ohne eine web.xml-Datei zu tun.Ändern der Standard-Begrüßungsseite für Spring-Boot-Anwendung im Einsatz

Gemäß der Dokumentation können wir es tun, um die EmbeddedServletContainerFactory mit diesem Code verwendet:

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 

    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); 

    TomcatContextCustomizer contextCustomizer = new TomcatContextCustomizer() { 
     @Override 
     public void customize(Context context) { 
      context.addWelcomeFile("/<new welcome file>"); 
     } 
    }; 
    factory.addContextCustomizers(contextCustomizer); 

    return factory; 
} 

Obwohl, wie wir eine Krieg-Datei erstellen und es zu tomcat und nicht über den integrierten Tomcat bereitstellen, diese isn tu alles.

Irgendeine Idee? Wenn wir wirklich eine web.xml-Datei hinzufügen müssen, wie können wir das tun und trotzdem Spring-Boot verwenden? Sollten wir die Application-Bean (mit der Hauptmethode) als Anwendungskontext für DispatcherServlet angeben? Die Dokumentation ist nicht sehr klar darüber.

Ältere Servlet-Container unterstützen den ServletContextInitializer-Bootstrap-Prozess, der in Servlet 3.0 verwendet wird, nicht. Sie können Spring und Spring Boot weiterhin in diesen Containern verwenden, aber Sie müssen Ihrer Anwendung eine web.xml hinzufügen und sie so konfigurieren, dass sie einen ApplicationContext über ein DispatcherServlet lädt.

Vielen Dank im Voraus!

Pedro

+1

Die Tatsache, dass Sie eine web.xml haben, bedeutet nicht, dass der ServletContainerInitializer nicht mehr funktioniert. Legen Sie einfach eine web.xml in die Datei mit nur einem Begrüßungsseiten-Tag. –

Antwort

21

Es ist nicht allzu schwer zu tun ... Sie müssen nur die Standardzuordnung zu übermitteln ...

@Configuration 
public class DefaultView extends WebMvcConfigurerAdapter{ 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/").setViewName("forward:/yourpage.html"); 
     registry.setOrder(Ordered.HIGHEST_PRECEDENCE); 
     super.addViewControllers(registry); 
    } 
} 
+0

das funktionierte für mich – AutoMEta

+1

@Downvoter ... interessieren sich zu kommentieren? –

7

Michael's tutorial Folgen, kann mir nur / meine index.gsp Datei zur Karte .

@Controller 
class Routes { 

    @RequestMapping([ 
     "/", 
     "/bikes", 
     "/milages", 
     "/gallery", 
     "/tracks", 
     "/tracks/{id:\\w+}", 
     "/location", 
     "/about" 
    ]) 
    public String index() { 
     return "forward:/index.gsp"; 
    } 
} 
0

Ich mache es wie folgt.

package org.gwtproject.tutorial.configuration; 

import org.springframework.context.annotation.Configuration; 
import org.springframework.core.Ordered; 
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 

/** 
* Configure the welcome page 
* 
*/ 
@Configuration 
public class SpringBootWelcomePageConfiguration extends WebMvcConfigurerAdapter implements WebMvcConfigurer { 

    /** 
    * redirect a user to the welcome page when he visits tha app without a 
    * destination url. 
    */ 
    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/").setViewName("forward:/ForExampleAGwtEntrypoint.html"); 
     registry.setOrder(Ordered.HIGHEST_PRECEDENCE); 
     super.addViewControllers(registry); 
    } 
} 
Verwandte Themen