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

Spring MVC控制器无法识别,所有接口返回HTTP 404错误求助

解决方案

1. 修正DispatcherServlet的URL映射

/*会拦截所有请求(包括JSP和静态资源),导致Tomcat的JSP Servlet无法处理视图请求,同时干扰Spring MVC的接口映射。修改为默认映射:

<servlet-mapping>
  <servlet-name>TodoListServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

/仅处理Spring MVC的路由请求,静态资源和JSP会由Tomcat默认Servlet处理。

2. 添加静态资源处理配置

在main.xml中添加默认Servlet处理器,确保静态资源正常访问的同时不影响接口:

<mvc:annotation-driven />
<mvc:default-servlet-handler/> <!-- 新增此行 -->

3. 验证视图文件路径匹配

视图解析器配置的prefix="/WEB-INF/view/"和suffix=".jsp"意味着:

  • return "home"会查找/WEB-INF/view/home.jsp
  • return "welcome"会查找/WEB-INF/view/welcome.jsp
    确保这些JSP文件存在于对应路径下。

4. 检查接口返回格式问题

对于返回ResponseEntity的接口(如/user),确保:

  • 请求头包含Content-Type: application/json
  • 请求体为合法JSON格式
  • jackson-databind依赖已正确引入(pom.xml中已配置)

5. 确认组件扫描生效

查看Tomcat启动日志,确认UserController被Spring扫描并注册为Bean,日志示例:

INFO: Mapped "{[/user],methods=[POST]}" onto public org.springframework.http.ResponseEntity<org.todolist.domain.User> org.todolist.controller.UserController.createUser(org.todolist.domain.User)

6. 调整MySQL驱动配置(可选)

JDBC 4.0+无需手动指定驱动类,可删除dataSource_mysql中的driverClassName属性,避免版本兼容问题:

<bean id="dataSource_mysql" class="org.springframework.jdbc.datasource.SingleConnectionDataSource"
     destroy-method="close">
   <property name="url" value="jdbc:mysql://localhost:3306/todolist_DB" />
   <property name="username" value="root" />
   <property name="password" value="root" />
</bean>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:25:56