【问题标题】:Unable to call servlet from form action [duplicate]无法从表单操作调用 servlet [重复]
【发布时间】:2017-10-22 09:59:34
【问题描述】:

我有一个表单,我想在其中向名为registrationServlet 的servlet 提交请求。注册servlet 位于名为“Controller”的目录下。但提交表单后无法访问 servlet。我该如何解决这个问题?提交表单后出现以下错误

HTTP 状态 404 - /ClassProject/Views/RegisterServlet

说明:请求的资源不可用。

form : (Form位于Views目录下的Login.jsp页面)

    <form action="RegisterServlet" class="register" method="POST" >
        <fieldset>
            <legend>Registration</legend>
            Username : <input type="text" name="username" id="username">
            </br></br>

            Password : <input type="password" name="password" id="password">
            </br></br>
            Email : <input type="email" name="email" id="email">
            </br></br>
            Date of Birth : <input type="date" name="date" id="date">
            </br></br>
            <input type="submit" value="Submit">
        </fieldset>
    </form>

web.xml:

<servlet>
    <servlet-name>RegisterServlet</servlet-name>
    <servlet-class>Controller.RegisterServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>RegisterServlet</servlet-name>
    <url-pattern>/RegisterServlet</url-pattern>
</servlet-mapping>

这是我的目录结构:

【问题讨论】:

  • 您遇到的错误是什么?
  • 编辑帖子。请检查
  • 问题是您在表单操作中使用相对路径将上下文根添加到您的操作值。
  • 出现/ClassProject/Views/RegisterServlet 错误
  • 问题出在你的项目结构上。按照@KarthikeyanVaithilingam 的建议浏览链接。

标签: java forms servlets url-pattern


【解决方案1】:

你需要改变

<form action="RegisterServlet" class="register" method="POST" >

<form action="../RegisterServlet" class="register" method="POST" >

因为,您的 Login.jsp 位于 Views 文件夹下,而您正尝试在同一路径中访问 RegisterServlet。而且,这就是为什么请求会去

/ClassProject/Views/RegisterServlet

而不是

 /ClassProject/RegisterServlet

但是,根据web.xml,此 servlet 存在于项目根目录中。

【讨论】:

  • 这会起作用,但我建议不要使用相对路径。通过这种方式使用&lt;form action="${pageContext.request.contextPath}/RegisterServlet"&gt;,即使 JSP 是从 servlet 转发的,它也可以工作。
  • @KarthikeyanVaithilingam 我不确定${pageContext.request.contextPath} 你能解释一下它是如何移动请求的吗?我的意思是,它怎么知道它是否必须去../../../。假设你有/ClassProject/Views/RegisterServlet/ClassProject/Views/something/RegisterServlet。那么,你的login.jsp/ClassProject/Views/else/login.jsp ?
猜你喜欢
  • 2015-02-06
  • 2015-10-03
  • 1970-01-01
  • 2012-06-12
  • 2016-05-02
  • 2021-06-24
  • 2014-07-08
  • 2011-07-24
  • 2021-06-29
相关资源
最近更新 更多