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

Spring MVC注解控制器访问/home/user出现HTTP 404错误求助

解决Spring MVC注解控制器404问题的实用排查方案

嗨,我初学Spring MVC的时候也踩过一模一样的404坑!给你列几个最容易出问题的排查点,按顺序检查应该能找到原因:

  • 先确认组件扫描配置覆盖了控制器包
    不管你用Java配置还是XML配置,Spring必须能扫到你的控制器类才行:

    • 用Java配置的话,检查配置类上的@ComponentScan注解,basePackages得包含你的控制器所在包(比如com.yourname.controller);
    • 用XML配置的话,确保<context:component-scan base-package="com.yourname.controller"/>没写错包名,别把路径打错了。
  • 核对@RequestMapping的路径层级
    看看你的控制器代码:

    • 如果控制器类上标注了@RequestMapping("/home"),那方法上得写@RequestMapping("/user"),组合起来才是/home/user;
    • 如果类上没加@RequestMapping,那方法上得直接写@RequestMapping("/home/user")。别搞混层级,多写或少写斜杠都会导致路径不匹配。
  • 检查web.xml里的DispatcherServlet配置
    你贴的web.xml代码不完整,重点看这两个关键配置:

    • <url-pattern>必须是/(注意不是/*!/*会拦截所有请求包括静态资源,/才是Spring MVC的正确配置);
    • 一定要加<load-on-startup>1</load-on-startup>,让DispatcherServlet在容器启动时就初始化,避免第一次请求才加载出问题。
      给你个标准配置参考:
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  • 别漏了@Controller注解
    控制器类必须标注@Controller才能被Spring识别成控制器,光加@RequestMapping是没用的!这点很容易忘,赶紧检查一下你的类上有没有这个注解。

  • 确认访问路径是否带了项目上下文
    比如你的项目在Tomcat里部署的上下文路径是my-spring-app,那完整访问地址应该是http://localhost:8080/my-spring-app/home/user,而不是直接输入/home/user,很多新手会忽略这个项目名前缀。

  • 看日志找线索
    开启Spring的DEBUG级别日志,启动项目后看看日志里有没有扫描到你的控制器类,有没有注册/home/user这个请求映射。如果日志里完全没相关记录,那肯定是组件扫描或者控制器注解的问题,回到前面的步骤再排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:32:57