【问题标题】:404 error when trying to call servlet from JSP尝试从 JSP 调用 servlet 时出现 404 错误
【发布时间】:2013-11-07 08:27:18
【问题描述】:

我正在尝试使用表单操作从 jsp 调用 servlet,但是当我提交表单时,我的项目正在错误的文件夹中查找 servlet。

这是我的 JSP 文件:

<form name="ListAllDiseases" action="ListAllDiseases" method="post">
  <button type="submit">List diseases</button>
</form>

web.xml 映射如下:

<servlet>
<display-name>ListAllDiseases</display-name>
<servlet-name>ListAllDiseases</servlet-name>
<servlet-class>servlets.ListAllDiseases</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ListAllDiseases</servlet-name>
<url-pattern>/ListAllDiseases</url-pattern>
</servlet-mapping>

我的文件夹结构如下:

当我单击按钮时收到的错误消息是:

为什么它在 /View 而不是 /servlet 文件夹中寻找 servlet?我已经按照网上给出的教程做了所有的事情,但不知道为什么它不起作用。有人请帮忙,

谢谢。

【问题讨论】:

    标签: jsp servlets


    【解决方案1】:

    因为您的表单操作是相对的(您在 /view/Caller.jsp 中)。将其更改为/ProjectClient/ListAllDiseases,它应该可以工作。

    【讨论】:

    • 我确实尝试放置 /ListAllDiseases,但随后我收到错误消息“HTTP Status 404 - /ListAllDiseases”
    • 对不起,我忘记了上下文路径(使用绝对 URL 时)。它应该是 /ProjectClient/ListAllDiseases。但是不要忘记将上下文路径添加到每个绝对 URL 中,这很烦人。您可以使用 JSTL 的 生成 url(这会将 url 存储到 actionUrl 页面范围属性中)并使用 EL
    • 感谢 Kojotak,它现在可以工作了。但是这不是直接调用Servlet而不是通过web.xml吗?
    • 没有。您的 servlet 仍映射到 /ListAllDiseases,但这是上下文相关 URL。上下文路径(在您的情况下为 ProjectClient)允许多个 Web 应用程序在单个 Web 服务器上运行,并且充当所有绝对 URL 的“前缀”。您可以将上下文路径设置为 /,然后 servlet 的 url 将与 web.xml 中声明的相同。
    猜你喜欢
    • 2018-02-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2019-01-31
    • 2019-08-04
    相关资源
    最近更新 更多