IntelliJ中基础Spring MVC应用出现404 Not Found错误求助
Spring MVC 404错误排查指南(基于IntelliJ IDEA社区版)
一、项目结构检查
- 确认webapp目录已标记为Web资源根:右键webapp目录 → 选择Mark Directory as → Web Resource Root,确保目录图标变为蓝色文件夹。
- 检查Controller类所在包是否被Spring扫描覆盖:比如HomeController的包路径要匹配spring-servlet.xml里的组件扫描配置。
二、pom.xml配置检查
- 保证Spring MVC相关依赖版本统一,避免版本冲突:
<!-- 示例依赖,替换为你使用的版本 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.20</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.3.20</version> </dependency> - 添加Servlet API依赖并设置scope为provided,防止打包冲突:
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> - 确认maven-war-plugin配置正确,确保webapp目录被识别:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <warSourceDirectory>src/main/webapp</warSourceDirectory> </configuration> </plugin> </plugins> </build>
三、web.xml配置检查
- 确认DispatcherServlet的映射路径为
/(不要写成/*,会覆盖静态资源和JSP访问):<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> - 配置欢迎页,确保index.jsp能被直接访问:
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
四、spring-servlet.xml配置检查
- 必须开启注解驱动,这是Spring MVC处理注解的核心:
<mvc:annotation-driven/> - 组件扫描路径要指向Controller所在包:
<context:component-scan base-package="com.example.controller"/> <!-- 替换为你的实际包路径 --> - 视图解析器配置要匹配JSP存放路径:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <!-- JSP所在目录前缀 --> <property name="suffix" value=".jsp"/> <!-- 文件后缀 --> </bean>注意:如果index.jsp在webapp根目录,直接返回"index"会找不到,可在Controller里返回
"forward:/index.jsp",或者调整视图解析器配置。
五、HomeController代码检查
- 类上必须加
@Controller注解,方法上的@RequestMapping路径要正确:@Controller public class HomeController { @RequestMapping("/") public String home() { return "index"; // 匹配视图解析器配置的视图名,或者写"forward:/index.jsp"直接跳转 } }
六、IDEA运行配置检查
- 检查Tomcat的Deployment选项卡,Application context设为
/(根路径),如果设了其他路径,访问时要加上前缀,比如/myapp,则访问地址是http://localhost:8080/myapp/。 - 查看Tomcat日志,找Spring容器初始化失败的提示,比如依赖缺失、配置文件语法错误,日志会给出具体原因。
内容的提问来源于stack exchange,提问作者suthar0
相关产品推荐
相关产品推荐

