Spring MVC项目启动无报错但出现404错误,求问题排查帮助
排查Spring MVC 404无启动报错问题的步骤
1. 版本兼容性检查
Tomcat 10.x基于Servlet 5.0,要求Spring MVC版本为Spring 6.x及以上。如果项目使用Spring 5.x及更低版本,会因API包名从javax.servlet变更为jakarta.servlet,导致控制器无法被Spring容器扫描识别。直接查看项目依赖中spring-webmvc的版本,确认是否匹配Tomcat 10的要求。
2. 组件扫描与控制器注解验证
- 检查Spring配置类是否添加
@ComponentScan注解,且扫描路径覆盖控制器所在包,示例:@Configuration @ComponentScan(basePackages = "com.your.controller.package") @EnableWebMvc public class WebConfig implements WebMvcConfigurer { // 配置内容 } - 确认控制器类标注了
@Controller或@RestController,请求方法上的@RequestMapping/@GetMapping等注解路径拼写正确。
3. DispatcherServlet注册检查
- 若用Java配置,检查
AbstractAnnotationConfigDispatcherServletInitializer实现类的配置:public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class[]{RootConfig.class}; } @Override protected Class<?>[] getServletConfigClasses() { return new Class[]{WebConfig.class}; } @Override protected String[] getServletMappings() { return new String[]{"/"}; // 确保映射所有请求 } } - 若用XML配置,检查
web.xml中DispatcherServlet的<url-pattern>是否设为/,且配置文件路径正确。
4. 日志细节排查
查看Tomcat的localhost.log和localhost_access_log.*.txt日志,检查请求到达后的处理记录,确认DispatcherServlet是否接收请求但找不到对应映射。
5. JSP视图解析验证
如果控制器返回视图名(如"index"),检查视图解析器配置:
@Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); // 确认前缀路径正确 resolver.setSuffix(".jsp"); return resolver; }
同时确认index.jsp文件在对应路径下,且Tomcat本身JSP功能正常(可测试Tomcat默认ROOT项目的JSP访问)。
6. IDEA部署配置检查
- 确认IDEA中Tomcat部署的
Application context设为空(访问路径为http://localhost:8080/),若有前缀需在请求时加上。 - 检查项目
target目录是否生成了正确的编译class文件,WEB-INF下的配置文件是否复制到位。
内容的提问来源于stack exchange,提问作者Maksym
相关产品推荐
相关产品推荐

