2015-11-08 43 views
1

我正在開發一個Web應用程序,使用基於純Java的Spring MVC並且沒有web.xml配置。我編寫了下面的類來加載bean並設置url模式。我如何設置歡迎文件?如何使用基於純Java的配置開發spring mvc應用程序並且不使用web.xml時設置歡迎文件?

public class MyAppWebAppIntializer implements WebApplicationInitializer { 
    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     AnnotationConfigWebApplicationContext appCtx = new AnnotationConfigWebApplicationContext(); 
     appCtx.register(ApplicationContextConfig.class); 

     Dynamic dispatcher = servletContext.addServlet(
       "SpringDispatcher", new DispatcherServlet(appCtx)); 
     dispatcher.setLoadOnStartup(1); 
     dispatcher.addMapping("/"); 
    } 
} 
+0

這可能幫助:http://stackoverflow.com/questions/30972676/how-to-specify-welcome-file-list-in-webapplicationinitializer-onstartup –

+1

如何使用控制器以「/」爲請求映射並返回你想要的視圖? – cpd214

+0

感謝您的回覆@ cpd214。我實際上做了同樣的事情,它確實有效。 –

回答

4

在開發用純Java配置Spring MVC的應用程序,我們可以做我們的擴展WebMvcConfigurerAdapter類應用程序配置類設置主頁並重寫addViewControllers方法如下所述,我們可以設置默認主頁。

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = { "com.myapp.controllers" }) 
public class ApplicationConfig extends WebMvcConfigurerAdapter { 

    @Bean 
    public InternalResourceViewResolver getViewResolver() { 
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
    viewResolver.setPrefix("/WEB-INF/view/"); 
    viewResolver.setSuffix(".jsp"); 
    return viewResolver; 
    } 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
    registry.addViewController("/").setViewName("home"); 
    } 

} 

它返回home.jsp視圖,可以作爲一個主頁。無需創建自定義控制器邏輯來返回主頁視圖。

addViewControllers法的JavaDoc說 -

配置簡單的自動化控制器預先配置有所述 響應狀態代碼和/或使反應體的圖。這是 在存在不需要定製控制器邏輯 情況下是有用 - 例如呈現主頁,執行簡單的站點URL重定向,返回包含HTML內容的404狀態,沒有內容的204狀態等等。

第二方式 -

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

第三路 - - 對於靜態的HTML文件的主頁,我們可以在我們的配置類使用下面的代碼 請求映射「/ 「下面也會返回home.jsp,它可以作爲應用程序的主頁。但推薦上述過程。

@Controller 
public class UserController { 

    @RequestMapping(value = { "/" }) 
    public String homePage() { 
     return "home"; 
    } 

} 
相關問題