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

除首页外Servlet无法运行,点击按钮触发Tomcat 404错误求助

解决Servlet点击按钮出现Tomcat 404资源找不到的问题

嘿,这个Tomcat返回的404资源找不到问题我太熟悉了!首页能访问说明项目部署没问题,但点击「添加新书」「列出所有书籍」就报错,基本是Servlet映射或者前端请求路径没对上,咱们来逐一排查:

1. 先检查Servlet的映射配置

不管你是用web.xml还是注解@WebServlet,都得确保映射的路径和前端请求的路径完全匹配:

  • 如果是web.xml配置,要确认<servlet-mapping>里的<url-pattern>和按钮请求的路径一致(比如请求的是/new,配置就得对应上):
    <servlet>
        <servlet-name>AddBookServlet</servlet-name>
        <servlet-class>com.yourpackage.AddBookServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddBookServlet</servlet-name>
        <url-pattern>/new</url-pattern>
    </servlet-mapping>
    
  • 如果是用注解,直接在Servlet类上标注正确的路径:
    @WebServlet("/new")
    public class AddBookServlet extends HttpServlet {
        // 你的业务逻辑代码
    }
    

2. 确认前端按钮的请求路径没写错

很多时候问题出在前端的请求路径上,尤其是项目有上下文路径的时候,别直接写绝对路径:

  • 如果是表单提交,记得用${pageContext.request.contextPath}获取项目上下文路径,避免路径错误:
    <form action="${pageContext.request.contextPath}/new" method="post">
        <!-- 表单输入项 -->
        <button type="submit">添加新书</button>
    </form>
    
  • 如果是a标签跳转,同样要加上上下文路径:
    <a href="${pageContext.request.contextPath}/list">列出所有书籍</a>
    
    要是你直接写/new,当项目不是部署在Tomcat的ROOT路径下时,就会找不到资源。

3. 检查Servlet类的基础结构

确保你的Servlet类正确继承了HttpServlet,并且重写了对应请求方法(比如前端是POST请求就重写doPost,GET就重写doGet):

public class AddBookServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 处理添加新书的逻辑
    }
}

要是没重写对应方法,Tomcat没法正确处理请求,也可能导致404或者错误跳转。

4. 确认项目部署状态

最后再检查下项目是不是正确部署到Tomcat了,上下文路径和你配置的一致。可以去Tomcat的管理页面看看已部署的应用,或者在IDE的部署配置里确认上下文路径没写错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:31:55