如何通过优化实现默认页面跳转效果?

摘要:记录一个前端页面问题:意图是在浏览器输入ip+port后自动跳转登陆页面login.html,springmvc拦截器添加: 1 @Override 2 public void addViewControllers(Vie
记录一个前端页面问题:意图是在浏览器输入ip+port后自动跳转登陆页面login.html,springmvc拦截器添加: 1 @Override 2 public void addViewControllers(ViewControllerRegistry registry) { 3 registry.addViewController("/").setViewName("forward:/login.html"); 4 } 但添加后拉起服务不定时报错: 查询后分析原因:Spring MVC 的 setViewName("forward:/xxx") 语法默认会通过视图解析器(比如 Thymeleaf、JSP)来解析这个路径。 如果: 当前项目模块没有配置视图解析器(比如 Thymeleaf、 JSP) 或者 /login.html 不在视图解析器的查找目录(如 templates/) 就会报:Could not resolve view with name 'forward:/login.html' in servlet with name 'dispatcherServlet' 修改为: 1 @Override 2 public void addViewControllers(ViewControllerRegistry registry) { 3 registry.addViewController("/").setViewName("redirect:/login.html"); 4 } 日志中不定时的报错没有了,但当尝试使用/直接访问/login.html时,还有报错: 继续分析,login.html 放在 src/main/resources/static/ 目录下,是 Spring Boot 默认静态资源目录,不需要视图解析器。 采用addRedirectViewController,这个方法是专门用于跳转静态资源的重定向用法,不会走视图解析器,也不会报错。 1 @Override 2 public void addViewControllers(ViewControllerRegistry registry) { 3 registry.addRedirectViewController("/", "/login.html"); 4 } 此段代码作用: 请求 /, 302 重定向到 /login.html 浏览器直接访问静态资源 /login.html ✅ 不会走视图解析器,不会报错