2014-09-26 62 views
12

我试图找到一种方法来更改正在作为生产中的战争部署的弹簧引导应用程序的默认欢迎页面,但我可以'找到一种方法来做到这一点没有web.xml文件。更改作为战争部署的弹簧引导应用程序的默认欢迎页面

根据该文件,我们可以使用EmbeddedServletContainerFactory与此代码做到这一点:

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

虽然,因为我们正在创建一个war文件,并使用内嵌的Tomcat中部署它把Tomcat,而不是,这个ISN什么都不做。

有什么想法?如果我们真的需要添加一个web.xml文件,我们该如何做,仍然使用spring启动?我们是否应该将Application bean(使用main方法)指定为DispatcherServlet的应用程序上下文?文件不是很清楚。

较旧的Servlet容器不支持Servlet 3.0中使用的ServletContextInitializer引导进程。您仍然可以在这些容器中使用Spring和Spring Boot,但是您需要将web.xml添加到您的应用程序,并将其配置为通过DispatcherServlet加载ApplicationContext。

提前感谢!

佩德罗

+1

事实上,你有一个web.xml并不意味着ServletContainerInitializer不再工作。只需使用'welcome-page'标签在文件中放置一个web.xml即可。 – 2014-09-26 11:21:29

回答

21

这不是太难的事......你只需要转发默认映射...

@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

这工作对我来说 – AutoMEta 2016-05-25 16:03:08

+1

@Downvoter ...照顾评论? – 2016-10-17 15:38:21

7

Michael's tutorial,我可以只映射/index.gsp文件。

@Controller 
class Routes { 

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

我这样做如下。

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