VSCode中Spring MVC控制器失效404问题求助
排查Spring MVC控制器404问题的步骤
1. 检查Spring组件扫描配置
确保Spring MVC的配置文件(通常为dispatcher-servlet.xml或spring-mvc.xml)中包含正确的组件扫描路径,让Spring能检测到你的Controller类:
<context:component-scan base-package="你的Controller所在的包路径"/>
例如若Controller位于com.example.sp5.chap09.controller包下,base-package需设为该路径或其父包(如com.example.sp5.chap09)。
2. 验证DispatcherServlet的映射配置
查看web.xml中DispatcherServlet的<url-pattern>配置,必须确保它能拦截到/hello请求。正确配置示例:
<servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> <!-- 拦截所有非静态资源请求 --> </servlet-mapping>
若配置为*.do这类后缀匹配规则,/hello请求不会被DispatcherServlet处理,直接导致控制器无法触发。
3. 检查Controller注解和请求映射
- 确认Controller类上标注了
@Controller注解,无拼写错误。 - 验证方法上的
@RequestMapping("/hello")路径与请求URL的/hello完全一致(URL大小写敏感)。示例代码:
@Controller public class HelloController { @RequestMapping("/hello") public String hello(@RequestParam("name") String name, Model model) { System.out.println("参数name:" + name); model.addAttribute("name", name); return "hello"; } }
4. 确认项目上下文路径
检查Tomcat部署的项目上下文路径是否为sp5-chap09:
- 查看Tomcat的
conf/server.xml中<Context>标签的path属性,确保path="/sp5-chap09"。 - 或在VSCode的Tomcat部署配置中,确认上下文路径设置正确。路径不符会直接导致请求404。
5. 检查Maven依赖与打包配置
- 确保
pom.xml中包含完整的Spring MVC依赖:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>你的Spring版本(如5.3.20)</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency>
- 确认配置了Maven War插件,保证打包后的war包结构合规:
<build> <finalName>sp5-chap09</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build>
6. 验证编译与部署文件
- 检查项目的
target/classes目录下,是否存在编译后的Controller类文件(如HelloController.class)。若缺失,执行mvn compile命令手动编译。 - 查看Tomcat的
webapps/sp5-chap09/WEB-INF/classes目录,确认Controller的class文件已被正确部署。若文件缺失,重新部署项目。
内容的提问来源于stack exchange,提问作者정상환
相关产品推荐
相关产品推荐

