本文详解 servlet 返回 http 404 的核心原因(非代码错误),涵盖注解配置、部署路径、tomcat 版本兼容性、项目结构及 ide 集成等关键环节,并提供可立即验证的调试步骤。
Servlet 出现 HTTP Status 404 – The requested resource is not available 是初学者最常遇到的问题,但绝大多数情况下并非代码逻辑错误——正如示例中所见,@WebServlet("/SampleServlet2") 注解和 doGet() 实现完全正确,且在标准环境(如 Eclipse + Tomcat 9)下可正常运行。问题根源通常在于请求路径与实际部署上下文不匹配或容器未正确加载 Servlet。
假设你的 Web 应用部署后的上下文路径(Context Path)为 /myapp(即项目名为 myapp),而 @WebServlet("/SampleServlet2") 声明的是相对于上下文根的路径,则完整访问 URL 应为:
http://localhost:8080/myapp/SampleServlet2
⚠️ 常见错误:直接访问 http://localhost:8080/SampleServlet2(缺少上下文路径)或 http://localhost:8080/servlet/SampleServlet2(误加额外路径段)。
确认项目已成功部署到 Tomcat
验证 @WebServlet 注解是否生效(Servlet 3.0+ 要求)
检查包结构与类路径
Tomcat 版本与 Servlet 规范兼容性
import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; // ... 其余同理
否则编译会失败或类无法加载。
,但本例中已修正)。总结:404 不是“代码错了”,而是“容器找不到它”。始终从 部署路径 → 注解生效性 → 包结构 → 容器版本 四层递进排查。现代开发中,优先使用 @WebServlet 注解(简洁)+ 明确上下文路径访问,可规避 90% 的 404 问题。