【问题标题】:Java Servlet 404 errors [duplicate]Java Servlet 404 错误 [重复]
【发布时间】:2010-09-09 04:02:00
【问题描述】:

当由 Sun 的 J2EE deploytool 自动创建的给定 .WAR 中的页面试图在同一个 .WAR 文件中加载 Servlet 时,最有可能导致 404 resource not found 错误的罪魁祸首是什么?
例如:

HTTP 状态 404 - /MyServlet/MyServlet

类型状态报告

消息 /MyServlet/MyServlet

说明请求的资源(/MyServlet/MyServlet)不可用。


相关:其中,您希望有多少是特定于服务器的?例如:Sun Java Application Server vs Tomcat & Catalina

【问题讨论】:

  • 你没有从本地服务器得到响应,但你从 stackoverflow 服务器得到了这么多响应。

标签: java web-applications servlets jakarta-ee


【解决方案1】:

在您的 web.xml 中是否存在有效的“MyServlet”?那是我过去的头号罪魁祸首

【讨论】:

    【解决方案2】:

    404 错误表示未找到请求的资源。正如 pkaeding 所暗示的,这可能是由于 web.xml 文件中的 servlet 映射不正确(或不存在)。 Servlet 必须在 web.xml 文件中指定,不仅如此,它们还必须映射到特定路径(“url-mapping”)。如果“MyServlet”servlet 存在,但没有映射到可以基于应用程序上下文根使用“/MyServlet/MyServlet”解析的路径,并且没有其他任何东西(即另一个 servlet 等)可以使用此路径解析,则应用程序服务器将抛出 404 说明没有任何内容映射到给定路径。

    【讨论】:

      【解决方案3】:

      我刚刚花了大约一个小时来解决这个问题。 OSX 上的 Tomcat 5.5.27 运行良好,直到我添加了另一个 servlet 和 servlet-mapping,此时 everything 返回 404。我没有意识到,但是当我添加一个新的 servlet/servlet-mapping 对我将 servlet-mapping 放在 servlet 条目之前。这是一个容易犯的错误,虽然在不给出任何类似合理错误信息的情况下对整个应用程序进行限制似乎有点极端,但回想起来却是完全合理的。

      【讨论】:

        【解决方案4】:

        Servlet 映射是一个常见问题。但是,如果您的 web.xml 中有任何过滤器,那么它们也可能是罪魁祸首。要意识到的一件事是过滤器总是在任何 servlet 开始执行之前执行 doFilter 之前的代码。 (技术上,过滤器在 doFilter 之后执行代码)在我们的代码中,我们创建了在某些情况下会返回 404 的过滤器。有时删除部分或全部过滤器映射将有助于发现它是否与过滤器映射有关。

        【讨论】:

          猜你喜欢
          • 2015-09-01
          • 1970-01-01
          • 2014-02-01
          • 2012-05-15
          • 2021-05-11
          • 1970-01-01
          • 2014-08-21
          • 2014-04-03
          • 1970-01-01
          相关资源
          最近更新 更多