在开发具有纯Java配置且没有web.xml的spring mvc应用程序时,如何设置欢迎文件?
问题内容:
我正在使用Spring
MVC开发基于纯Java且没有web.xml配置的Web应用程序。我确实对下面的类进行了编码,以加载bean并设置url模式。如何设置欢迎文件?
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("/");
}
}
问题答案:
在开发基于纯Java的Configuration的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状态等。
第二种方法 -对于静态HTML文件首页,我们可以在配置类中使用以下代码-
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/index.html");
}
第三种方式- 下方的请求映射“ /”也将返回home.jsp,可以将其用作应用程序的主页。但是建议使用上述过程。
@Controller
public class UserController {
@RequestMapping(value = { "/" })
public String homePage() {
return "home";
}
}