Servlet request.getParameter() 总是返回“null”

Posted

技术标签:

【中文标题】Servlet request.getParameter() 总是返回“null”【英文标题】:Servlet request.getParameter() always returning "null" 【发布时间】:2014-09-21 13:22:29 【问题描述】:

我已经阅读了所有相关问题,尝试了所有接受的答案,但我仍然没有找到运气。

我有一个在 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中指定如下

 <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】:

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

【讨论】:

将我的
更改为
并将我的 doGet 更改为 doPost。现在一切正常。非常感谢。

以上是关于Servlet request.getParameter() 总是返回“null”的主要内容,如果未能解决你的问题,请参考以下文章

AJAX请求servlet验证代码是不是重复时总是返回值为undefined

request.getAttribute()和request.getParameter()两个方法的区别

EL表达式基础

JavaEE——Java导出Excel表

无法解析 JSP 中的方法 getParameter()

后台以json数据形式返回之后前台接受的方法以及之后的解析总结