2015-06-22 11 views
9

Attualmente ho un'applicazione Web in cui stiamo utilizzando web.xml per configurare l'applicazione. Il web.xml ha un elenco di file di benvenuto.come specificare l'elenco di file di benvenuto in WebApplicationInitializer.onStartup()

<web-app> 
    ... 
    <welcome-file-list> 
    <welcome-file>home.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

Si prevede di utilizzare il framework di primavera e utilizzare la classe java per la configurazione dell'applicazione.

class MyApplication extends WebApplicationInitializer { 
    public void onStartUp(ServletContext context){ 
     ... 
    } 
} 

Come si specifica l'elenco di file di benvenuto in questa classe java?

+3

Non credo che tu possa. –

risposta

4

Non

può Come specificato nel Java Doc

public interface WebApplicationInitializer

Interface da attuare in ambienti Servlet 3.0 + al fine di configurare il ServletContext di programmazione - come opposto a (o possibilmente in congiunzione con) l'approazione basata su web.xml tradizionale ach.

ma è ancora necessario configurazione minima in web.xml, come ad

<welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
+3

Sebbene questa risposta sia corretta (non puoi :)). Si potrebbe voler aggiungere che questo non è in realtà correlato a Spring ma il fatto che non sia implementato nell'approccio di configurazione basato su '' ServletContext', vale a dire java, per i contenitori servlet. Anche quando non si utilizza Spring e si utilizza un semplice 'ServletContainerInitializer', non sarà possibile, almeno non in modo agnostico in un contenitore servlet. –

3
@EnableWebMvc 
@Configuration 
@ComponentScan("com.springapp.mvc") 
public class MvcConfig extends WebMvcConfigurerAdapter { 
... 
@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/*.html").addResourceLocations("/WEB-INF/pages/"); 
} 

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

Questo potrebbe aiutare.

14

Durante lo sviluppo dell'applicazione Spring MVC con pura configurazione basata su Java, è possibile impostare la home page facendo in modo che la classe di configurazione dell'applicazione estenda la classe WebMvcConfigurerAdapter e sovrascriva il metodo addViewControllers in cui è possibile impostare la home page predefinita come descritto di seguito.

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

} 

Si restituisce home.jsp vista che può essere servita come home page. Non è necessario creare una logica controller personalizzata per restituire la vista della pagina iniziale.

Il JavaDoc per addViewControllers metodo dice -

Configurare semplici regolatori automatici preconfigurati con il codice di stato risposta e/o al fine di rendere il corpo della risposta. Questo è utile nei casi in cui non è necessaria la logica del controller personalizzato - ad es. esegue il rendering di una home page, esegue semplici reindirizzamenti URL del sito, restituisce uno stato 404 con contenuto HTML, un 204 senza contenuto e altro.

secondo modo - Per home page file HTML statico possiamo usare il codice qui sotto nella nostra classe di configurazione. Si tornerà index.html come una home page -

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

terzo modo - La mappatura richiesta "/" seguito tornerà anche home vista che può essere servita come una home page per un app. Ma i modi di cui sopra sono raccomandati.

@Controller 
public class UserController { 
    @RequestMapping(value = { "/" }) 
    public String homePage() { 
     return "home"; 
    } 
} 
Problemi correlati