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

Spring MVC表单提交404报错:No mapping for GET /demoMVC/output求助

解决Spring MVC 4.0提交表单返回404(No mapping for GET /demoMVC/output)的问题

我帮你梳理下这个404问题的几个核心原因,咱们一步步来排查修复:


1. 控制器包扫描路径错误(最关键问题)

你看你的控制器sampleController.java放在com.guni包下,但Spring配置文件里的组件扫描路径是:

<context:component-scan base-package="com.guni.Controllers"></context:component-scan>

这个路径是com.guni.Controllers,根本扫不到com.guni下的控制器!所以DispatcherServlet找不到处理/output请求的映射,直接返回404。

修复方案:
把组件扫描路径改成你的控制器所在的包:

<context:component-scan base-package="com.guni"></context:component-scan>

或者把控制器类移到com.guni.Controllers包下(记得修改Java文件的package声明)。


2. 缺少Spring MVC注解驱动配置

你的Spring配置文件里只开启了注解配置和组件扫描,但没有启用Spring MVC的注解驱动。<mvc:annotation-driven/>会自动注册处理@RequestMapping注解所需的处理器映射器和适配器,没有它的话,即使扫描到控制器,注解也不会生效。

修复方案:
在Spring配置文件里添加这个标签:

<mvc:annotation-driven/>

你的配置文件已经引入了mvc命名空间,直接加标签就行。


3. Spring配置文件的命名与位置问题

你在web.xml里配置的DispatcherServlet名字是sample,根据Spring MVC的默认规则,它会自动加载WEB-INF/sample-servlet.xml作为配置文件。如果你的配置文件名字不是这个,或者放在了其他位置,DispatcherServlet就加载不到配置,导致控制器映射失效。

验证与修复:

  • 确认你的Spring配置文件命名为sample-servlet.xml,并且放在WEB-INF目录下;
  • 如果想自定义配置文件路径,可以在web.xml的<servlet>标签里添加初始化参数:
<servlet>
    <servlet-name>sample</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/你的配置文件名.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

4. 表单Action路径的上下文问题

你的表单action写的是output,当应用部署在上下文路径demoMVC下时,实际请求的是/demoMVC/output,这个路径本身是对的,但为了避免上下文路径变化导致的问题,建议用EL表达式动态获取上下文路径:

<form action="${pageContext.request.contextPath}/output">

这样不管你的应用上下文是什么,路径都会自动适配。


5. Spring Schema版本与Spring4.0不匹配

你的配置文件里用的是Spring3.0的schema(比如spring-beans-3.0.xsd),但你用的是Spring4.0框架,虽然可能兼容,但最好改成对应4.0版本的schema,避免潜在的配置冲突:

xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"

最后验证步骤

  1. 把上述修改完成后,清理Eclipse项目(Project → Clean);
  2. 重新部署到Tomcat9,确保没有部署错误;
  3. 启动Tomcat,访问首页提交表单,应该就能正常跳转到sampleOutput.jsp了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:15:04