【问题标题】:HTTP Status 404 - Not Found on call of Servlet [duplicate]HTTP状态404-调用Servlet时未找到[重复]
【发布时间】:2014-11-20 02:13:24
【问题描述】:

当我从 JSP 页面调用 Servlet 时,我得到 HTTP 状态 404。

这里是 web.xml:

<servlet>
    <servlet-name>Register</servlet-name>
    <servlet-class>servlets.dataio.registration.Register</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Register</servlet-name>
    <url-pattern>/Register</url-pattern>
</servlet-mapping>

下面是JSP的有效代码:

<form name="admin-form" action="Register" method="POST"> 

错误信息:

HTTP Status 404 - Not Found

type Status report

message: Not Found

description: The requested resource is not available.

目录结构为:

Web Pages --> Pages --> Registration --> registerpage.jsp

我已经尝试过清洁和建筑项目。 我正在使用 NetBeans IDE 和 GlassFish 服务器

【问题讨论】:

  • 清理并构建项目并尝试解聚并运行。
  • JSP 文件是否在某个文件夹下?它应该在Web Pages 之下,因为您使用的是action="Register"
  • @J.Lucky 不,JSP 不只是在 Web Pages 内部。
  • 那么这就是您收到错误的原因。请发布您的目录结构,以便我可以帮助您修复它。

标签: java jsp servlets http-status-code-404


【解决方案1】:

试试:

action="../../Register"

使您的页面相对于 Servlet 所在的位置。

../ 表示向上一个目录。根据您发布的目录结构,它是Web Pages 下的两个文件夹,因此您需要两个../ 才能使其相对于您的Servlet 所在的位置,即基于&lt;url-pattern&gt;/Register&lt;/url-pattern&gt;,意思是在@ 下987654326@

【讨论】:

    【解决方案2】:

    action 属性默认使用相对路径,因此如果您的 jsp 在 http://yourHost/yourApp/pathToJsp/registerpage.jsp 可用,那么您的相对 servlet 路径是 http://yourHost/yourApp/pathToJsp/Register,这是不正确的。

    你有两个选择:

    • 使用 J.Lucky 建议的相对路径 - 但它容易出错,因为您必须在每个 jsp 中修复它,或者如果您在目录结构中移动 jsp
    • 使用绝对路径 - 以 / 开头 - 但您需要包含上下文根名称,例如 - /yourContext/Register。如果你想避免硬编码上下文根,你可以使用 request.getContextPath() 方法,比如action='&lt;%=request.getContextPath()%&gt;/Register'

    【讨论】:

      【解决方案3】:

      尝试 action="/Register"

      这一行是因为消息必须至少有 30 个字符

      【讨论】:

      • 还有其他已注册的 servlet 吗?
      猜你喜欢
      • 2019-07-30
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      相关资源
      最近更新 更多