WebMvcAutoConfiguration
@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext) {
return new WelcomePageHandlerMapping(new TemplateAvailabilityProviders(applicationContext), applicationContext, this.getWelcomePage(), this.mvcProperties.getStaticPathPattern());
}
private Optional<Resource> getWelcomePage() {
String[] locations = getResourceLocations(this.resourceProperties.getStaticLocations());
return Arrays.stream(locations).map(this::getIndexHtml).filter(this::isReadable).findFirst();
}
private Resource getIndexHtml(String location) {
return this.resourceLoader.getResource(location + "index.html");
}
如果我们想访问 templates 下面的index.html 也不删除static下面的 index.html 页面,那能不能实现呢?
@Controller
public class HelloController {
@RequestMapping(value = {"/","/index.html"})
public String index(){
return "index";
}
- 当项目启动 controller 跳转到 templates 下面的页面
- 这种方式是不推荐使用的,推荐使用下面这一种
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
/**
* 拦截某个请求跳转固定位置
*
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//super.addViewControllers(registry);
registry.addViewController("/nihao").setViewName("success");
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
}
}