Servlet请求中的request.getParameter()总是返回“null”

3

我已经阅读了所有相关的问题,尝试了每一个被接受的答案,但仍然没有找到解决方案。

我的网站运行在Tomcat上,有一个名为/Demo/的子页面,其中包含四个文本字段和一个提交按钮。提交按钮如下所示:

 <form method="post" action="DemoServlet">
                 <input type="hidden" name="form_action" value="write" />
                 <table>
                    <tr>
                       <td>
                          First Name:
                       </td>
                       <td>
                          <input type="text" 
                             name="firstname" />
                       </td>
                    </tr>
                    <tr>
                       <td>
                          Last Name:
                       </td>
                       <td>
                          <input type="text" 
                             name="lastname" id = "lastname" />
                       </td>
                    </tr>
                    <tr>
                       <td>
                          Email:
                       </td>
                       <td>
                          <input type="text" 
                             name="recipient" />
                       </td>
                    </tr>
                    <tr>
                       <td>
                          Phone1:
                       </td>
                       <td>
                          <input type="text" 
                             name="phone" />
                       </td>
                    </tr>
                    <tr>
                       <td>
                          <input type=button onClick="location.href='../demo-servlet'" value='Submit'/>
                       </td>
                       <td>
                       </td>
                 </table>
              </form>

这个/demo-servlet在web.xml中的指定如下:

/demo-servlet

 <servlet>
    <servlet-name>DemoServlet</servlet-name>
    <servlet-class>PACKAGENAME.DemoServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>DemoServlet</servlet-name>
    <url-pattern>/demo-servlet</url-pattern>
</servlet-mapping>

这个servlet如下所示:
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

    // Retrieve First Name from /Demo/ text field
    firstName = request.getParameter("firstname");

    // Retrieve Last Name from /Demo/ text field
    lastName = request.getParameter("lastname");
    /* MORE CODE HERE */
    request.getRequestDispatcher("/WEB-INF/confirmation.jsp").forward(request, response);
}

然后转到我的confirmation.jp文件,显示该过程已成功。

我的问题是,在调用request.getParameter()函数后,变量和都返回值“null”。

有人知道为什么会发生这种情况吗?

1个回答

5

您的表单标签上的方法为post,但是您在servlet中实现了doGet。此外,您的表单标签上的操作为DemoServlet,但应该是类似于../demo-servlet的东西。您可能根本不需要onClick


将我的 <form> 更改为<form method="post" action="../demo-servlet"> 并且将我的 doGet 更改为 doPost。现在一切都运行得非常完美。非常感谢。 - Trent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接