1.若采用渲染引擎,JSP等VIEW渲染技术,可以通过addViewController的方式解决。
即:
@Configuration
public class DefaultView extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/Blog").setViewName("forward:index.jsp");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
super.addViewControllers(registry);
}
}
或者
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping("/Blog")
public String index() {
return "forward:index.html";
}
}
2.若完全采用前后端分离的模式,即前端所有资源都放在addresourceHandler配置的路径下即
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/temples/**")
.addResourceLocations("classpath:/temples/");
super.addResourceHandlers(registry);
}
此时不能通过配置addViewController的方式解决,会抛出异常即
javax.servlet.ServletException: Could not resolve view with name 'forward:/temples/index.html' in servlet with name 'dispatcherServlet'
只能通过response.redirect(“temples/index.html”)的方式重指向默认主页,
注:我在WebMvcConfigurationSupport类中并未找到相关方法。也无其他解决方案。
即
@Controller
@RequestMapping("/")
public class IndexController {
@RequestMapping("/")
public void index(HttpServletResponse response) throws IOException {
response.sendRedirect("/temples/index.html");
}
}