2015-06-22 2 views
9

В настоящее время у меня есть веб-приложение, в котором мы используем web.xml для настройки приложения. В web.xml есть список приветственных файлов.как указать список приветственных файлов в WebApplicationInitializer.onStartup()

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

Мы планируем использовать пружинный каркас и использовать класс java для конфигурации приложения.

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

Как указать список приветственных файлов в этом классе java?

+3

Я не верю, что вы можете. –

ответ

4

Вы не

может, как указано в Java Doc

public interface WebApplicationInitializer

Interface быть реализован в сервлет 3.0+ средах для того, чтобы настроить ServletContext программно - в против (или, возможно, в сочетании с) традиционного подхода, основанного на web.xml Ach.

но вам все еще нужно в минимальной конфигурации в web.xml, например, для

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

Хотя этот ответ правильный (вы не можете :)). Возможно, вы захотите добавить, что это фактически не связано с Spring, но тот факт, что не реализован в подходе конфигурации «servletContext» i.e. java для контейнеров сервлетов. Даже если вы не используете Spring и используете простой «ServletContainerInitializer», это будет невозможно, по крайней мере, не в агроническом контейнере сервлета. –

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

Это может помочь.

14

При разработке Spring MVC-приложения с чистой конфигурацией на основе Java мы можем установить домашнюю страницу, добавив класс конфигурации приложения, расширяющий класс 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 вид, который может быть подан в качестве домашней страницы. Нет необходимости создавать логику пользовательского контроллера для возврата к просмотру домашней страницы.

JavaDoc для addViewControllers метода говорит -

Настройка простые автоматические контроллеры предварительно сконфигурированный с кодом состояния ответа и/или в целях оказания тела ответа. Этот полезен в случаях, когда нет необходимости в пользовательской логике контроллера . выполнять домашнюю страницу, выполнять простые переадресации URL сайта, возвращать статус 404 с содержимым HTML, 204 без содержимого и т. д.

второй путь - Для статической домашней страницы HTML файла мы можем использовать код, приведенный ниже в нашем классе конфигурации. Она возвращает index.html в качестве домашней страницы -

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

3-й путь - отображение запроса «/» ниже будет также возвращать home вид, который может быть подан в качестве домашней страницы для приложения. Но вышеуказанные способы рекомендуются.

@Controller 
public class UserController { 
    @RequestMapping(value = { "/" }) 
    public String homePage() { 
     return "home"; 
    } 
} 
Смежные вопросы