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

Java Servlet触发HTTP Status 404错误:点击JSP按钮遇异常问题

排查LogoutServlet 404错误的实用方案

既然其他Servlet都能正常运行,那这问题肯定出在LogoutServlet的配置、映射或者调用路径上,咱们一步步揪出问题:

1. 先核对Servlet的映射配置

如果用的是注解式配置(Servlet 3.0及以上版本),先看@WebServlet的路径是不是和请求路径匹配:

// 注意路径开头的斜杠,还有是不是和错误提示里的/pages/LogoutServlet对应
@WebServlet("/pages/LogoutServlet")
public class LogoutServlet extends HttpServlet {
    // 你的代码逻辑
}

要是用的是web.xml配置,得确保<servlet>和<servlet-mapping>完全对应:

<servlet>
    <servlet-name>LogoutServlet</servlet-name>
    <servlet-class>com.yourpackage.LogoutServlet</servlet-class> <!-- 这里包名别写错! -->
</servlet>
<servlet-mapping>
    <servlet-name>LogoutServlet</servlet-name>
    <url-pattern>/pages/LogoutServlet</url-pattern> <!-- 路径要和请求的一致 -->
</servlet-mapping>

⚠️ 注意:项目名ProjectName是服务器自动加上的,所以映射路径里不需要写它,只需要写/pages/LogoutServlet就行。

2. 检查JSP里的按钮跳转路径

看看你JSP中按钮对应的表单action或者链接路径:

  • 如果是相对路径,得注意JSP本身的位置:比如JSP已经在/pages目录下,那写action="LogoutServlet"就会变成/ProjectName/pages/LogoutServlet,这是对的;但如果JSP在根目录,写action="pages/LogoutServlet"才对。
  • 更稳妥的是用动态路径,自动带上项目名,避免硬编码出错:
<form action="${pageContext.request.contextPath}/pages/LogoutServlet" method="post">
    <button type="submit">退出登录</button>
</form>

3. 确认Servlet类是否被正确打包部署

  • 检查你的LogoutServlet是不是放在了正确的源码目录下(比如Maven项目要在src/main/java对应的包内),编译后有没有生成.class文件(去target/classes或WEB-INF/classes目录里找找)。
  • 有时候IDE编译漏了这个类,导致服务器根本找不到它,这时候清理下项目编译目录再重新编译试试。

4. 清理缓存+重启服务器

别小看缓存问题!很多时候就是服务器缓存了旧的配置:

  • 先清理项目的编译输出(比如Maven的target文件夹,Eclipse的bin文件夹);
  • 然后重启你的应用服务器(Tomcat之类的),再重新部署项目。

5. 深挖服务器日志细节

虽然你说没有警告或异常,但建议再仔细看看服务器的启动日志(比如Tomcat的catalina.log或localhost.log)——有时候Servlet初始化失败(比如init()方法里藏了异常),不会在页面上显示,但会在日志里留下痕迹,导致Servlet没被成功注册。

总结下:错误提示里的路径/ProjectName/pages/LogoutServlet说明服务器确实收到了请求,但找不到对应的Servlet映射,核心问题要么是映射路径和请求路径不匹配,要么是Servlet根本没被服务器加载到,按上面的步骤排查应该能解决。

内容的提问来源于stack exchange,提问作者Brenton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:30:43