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

运行Spring MVC项目遭遇404错误,请求协助定位问题

Spring MVC根请求404问题求助

运行Spring MVC项目时遭遇404错误,已通过Java注解配置将根请求(/)映射到home.jsp,检查映射规则后未发现明显问题。映射方法内添加的System.out.println语句也未在控制台输出,附上相关代码、项目结构及控制台日志信息,请求协助排查问题。

相关代码

HomeController

@Controller
public class HomeController {

    @GetMapping("/")
    public String home()
    {
        System.out.println("jjjjjjjjjjjjjjjjjj");
        return "home";
    }
}

Dispatcher Servlet配置类

public class DispServler extends AbstractAnnotationConfigDispatcherServletInitializer{

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] {ConfigurationClass.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] {"/"};
    }

}

Spring MVC配置类

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.veera")
public class ConfigurationClass {
    
    @Bean
    public ViewResolver viewResolver()
    {
        InternalResourceViewResolver vr = new InternalResourceViewResolver();
        vr.setPrefix("/");
        vr.setSuffix(".jsp");
        return vr;
    }

}

相关截图

  • 404错误页面截图
  • 项目结构截图
  • 控制台日志截图

排查与解决方案

从代码和现象来看,System.out.println未输出说明请求根本没走到HomeController的home方法,核心问题集中在DispatcherServlet未正确拦截请求或组件扫描失效,按以下步骤排查:

  1. 验证组件扫描范围
    确认HomeController所在包是否属于com.veera路径下。如果控制器不在该包内,@ComponentScan无法扫描到,Spring不会将其注册为Bean,自然无法处理请求。可修改配置类的扫描规则,明确指定控制器所在包,比如:

    @ComponentScan(basePackages = {"com.veera.controller"})
    
  2. 检查DispatcherServlet初始化状态
    查看控制台日志,是否存在Spring MVC初始化的相关日志(比如Mapped "/" onto public java.lang.String com.veera.HomeController.home())。如果没有这类日志,说明DispatcherServlet未启动:

    • 检查项目是否成功部署到Web容器(如Tomcat),确认容器版本与Spring MVC版本兼容(Spring MVC 5.x需Tomcat 8.5+,6.x需Tomcat 9+);
    • 确认项目Servlet版本符合要求(至少3.0+),AbstractAnnotationConfigDispatcherServletInitializer依赖Servlet 3.0+的注解式注册机制。
  3. 核对JSP文件路径与ViewResolver配置
    确认home.jsp是否放在Web应用根目录下(对应ViewResolver的prefix="/")。如果JSP文件在WEB-INF目录下,需将prefix修改为"/WEB-INF/",既符合安全规范,也能确保ViewResolver正确找到文件。

  4. 检查项目依赖完整性
    确保Maven/Gradle依赖中包含Spring MVC核心包与Servlet API包,避免依赖缺失导致初始化失败:

    <!-- Maven示例 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>你的Spring版本</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
    
  5. 添加调试验证
    在DispServler的onStartup方法中添加打印语句,确认初始化类是否被执行;或开启Spring日志调试模式,查看请求流转细节。

优先排查组件扫描和DispatcherServlet初始化这两个核心点,多数情况下问题都出在这里。


内容的提问来源于stack exchange,提问作者Veera Ezhil Vendhan V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:27:37