为什么Spring项目启动后无法自动跳转至正确的访问路径
问题根因
- 缺少根路径的请求映射规则:你当前编写的Controller仅配置了
/home/showHome路径的处理逻辑,项目启动后默认访问的根路径http://localhost:8080/E-CommerceFinal-1.0-SNAPSHOT/没有对应的请求处理方法,因此返回404。 - 未配置默认欢迎页规则:Web容器(如Tomcat)默认会优先查找Web应用根目录下的
index.html、index.jsp等默认欢迎文件,若不存在也没有自定义欢迎页配置,就会返回404错误。 - 此前的项目可以自动跳转,是因为旧项目要么根目录存在欢迎文件、要么提前配置了根路径映射、要么IDE启动配置中预设了默认打开的后缀路径。
解决方案
你可以任选以下任意一种方式修复:
- 新增根路径跳转映射
在现有Home控制器中新增根路径处理方法即可:
@Controller @RequestMapping("/home") public class Home { // 新增根路径跳转方法 @RequestMapping("/") public String rootRedirect(){ return "redirect:/home/showHome"; } @RequestMapping("/showHome") public String showHome(){ return "index"; } }
如果是注解驱动的SpringMVC项目,也可以通过实现WebMvcConfigurer接口统一配置视图控制器:
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("forward:/home/showHome"); } }
- 配置默认欢迎页
如果是传统WAR包部署到Tomcat的项目,在web.xml中添加欢迎页配置:
<welcome-file-list> <welcome-file>home/showHome</welcome-file> </welcome-file-list>
也可以直接在webapp根目录下新建index.html,在页面中添加跳转逻辑:
<script> location.href = "/E-CommerceFinal-1.0-SNAPSHOT/home/showHome"; </script>
- 修改IDE启动默认访问路径
以IDEA为例,打开Tomcat配置页,在Server标签下的URL输入框中将默认地址修改为http://localhost:8080/E-CommerceFinal-1.0-SNAPSHOT/home/showHome,后续启动项目就会自动打开正确的访问地址。
内容的提问来源于stack exchange,提问作者Stefan Jankovic
相关产品推荐
相关产品推荐

