You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

访问Spring MVC应用URL时出现404错误的原因排查求助

解决Spring MVC 404错误的问题

看起来你遇到的问题很典型——控制台明明显示映射已注册,但请求就是没到达控制器,结合你的代码,我梳理了几个核心原因和对应的解决方案:

1. Tomcat插件配置未生效(最可能的根因)

你的pom.xml里把tomcat7-maven-plugin放在了<pluginManagement>标签下,这个标签仅用于统一管理插件版本和默认配置,并不会实际启用插件。这意味着你运行mvn tomcat7:run时,用的是Maven默认的Tomcat配置,此时应用的上下文路径是项目的artifactId(也就是in28Minutes-first-webapp),而非你配置的/。

解决方案:

把Tomcat插件从<pluginManagement>移到<build><plugins>标签下,确保自定义配置生效:

<build>
  <pluginManagement>
    <!-- 保留原有的插件版本管理内容 -->
  </pluginManagement>
  <plugins>
    <!-- 将Tomcat插件移到此处,启用自定义配置 -->
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <path>/</path>
        <contextReloadable>true</contextReloadable>
      </configuration>
    </plugin>
  </plugins>
</build>

修改后重启Tomcat,应用上下文路径会变成/,此时访问http://localhost:8080/spring-mvc/login就能正确匹配到控制器。

2. 控制器类未被Spring正确扫描

虽然你配置了<context:component-scan base-package="com.wds"/>,但需要确认两个细节:

  • LoginController.java确实放在src/main/java/com/wds/springmvc/目录下(Maven只会编译这个路径下的Java文件)
  • 包名拼写完全一致(比如有没有把com.wds写成com.wd这类低级错误)

如果Spring没扫描到控制器,即使写了@Controller注解,也不会生成映射。可以查看启动日志,找类似Mapped "{[/login]}" onto public java.lang.String com.wds.springmvc.LoginController.sayHello()的日志,确认映射是否真的被注册。

3. 验证请求路径匹配逻辑

你的DispatcherServlet映射路径是/spring-mvc/*,这个逻辑是正确的:

  • 所有以/spring-mvc开头的请求都会被DispatcherServlet接收
  • Servlet会把/spring-mvc之后的路径(也就是/login)交给Spring MVC的映射处理器,匹配你的@RequestMapping("/login")

但如果插件配置未生效,应用上下文路径是默认的in28Minutes-first-webapp,此时正确的访问URL应该是http://localhost:8080/in28Minutes-first-webapp/spring-mvc/login。

额外检查点

  • 确认Tomcat启动时无报错:如果Spring初始化过程中出现依赖缺失、配置文件错误等异常,可能导致DispatcherServlet无法正常工作
  • 临时移除@ResponseBody测试:虽然你用这个注解直接返回字符串是正确的,但可以临时移除,加上简单的视图解析器配置,测试是否能跳转到视图,排除响应体处理的问题(Spring 4.2对@ResponseBody返回String的支持是完全没问题的)

按照上面的步骤排查,应该能快速解决你的404问题。

内容的提问来源于stack exchange,提问作者Dominic Keefe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 15:39:05