【问题标题】:httpservlet parameter are null [duplicate]httpservlet 参数为空 [重复]
【发布时间】:2015-06-29 17:24:51
【问题描述】:

我有一个带有表单的 jsp 页面。提交后调用一个 httpservlet 类。但是所有getParamter() 操作都返回null。我做错了什么?

JSP

<form action="GatherController" method="post">
    <input type='text' name="a"/>
    <input type='date' name="b" />
    ...
    <input type="submit" />
</form>

Servlet

@WebServlet(name = "GatherController", urlPatterns = { "/GatherController" })
public class GatherController extends HttpServlet {

    ...

    @Override
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {


        String a = request.getParameter("a");
        System.out.println(a);  

        ... 

    }
}

编辑

-我使用的是Tomcat v8.0

-doPost(...) 方法被执行,我得到一个带有System.out.println(a); 的输出,即null

【问题讨论】:

  • 您使用的服务器是什么?您是否绝对肯定在表单提交时控件将出现在您的 GatherController 的 doPost 方法中?
  • 你也和 b 核对过吗? b 值是多少?
  • 对于注册控制器的 servlet 容器,GatherController.class 应该在 WEB-INF/classes 目录中。我希望它已经存在 :)
  • 我检查了你的代码,它对我有用我使用out.println(a)(在浏览器中打印)而不是System.out.println(a); (在控制台中打印)进行打印
  • @Arkantos 如何注册我的控制器?

标签: java jsp tomcat servlets


【解决方案1】:

我没有足够的声誉来放置 cmets,所以如果您不介意,我将其作为答案。

请确保您之前不要在httpServletRequest 上调用其他方法,例如getReader()getInputStream()。在这些调用之后,您无法访问您的帖子参数。

【讨论】:

    【解决方案2】:
    <form action="GatherController" method="post"><input type="text" name="a"/>
    

    请使用双引号,它可能会工作

    【讨论】:

      【解决方案3】:
      <html>
      <h1>Register</h1><br>
          <body>
              <form name="userRegistration" method="post">
                  <input type="text" name="firstname"  class="textbox" required/>
                  <input type="text" name="lastname" class="textbox" required/>
                  <input type="text" name="email" class="textbox" required/>
              </form>
          </body>
       </html>
      

      servlet 代码

      @Override
      protected void doPost(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
      
          response.setContentType("text/html");
          PrintWriter out = response.getWriter();
      
          String firstname = request.getParameter("firstname");
          String lastname = request.getParameter("lastname");
          String email = request.getParameter("email");
      
      
          HttpSession session = request.getSession(false);
      
          if (//handle your logic) {
              out.print("<p style=\"color:red\">Account Created</p>");
              RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
              rd.forward(request, response);
          } else {
              out.print("<p style=\"color:red\">Error Occured </p>");
              RequestDispatcher rd = request.getRequestDispatcher("newuser.jsp");
              rd.include(request,response);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-04-04
        • 1970-01-01
        • 1970-01-01
        • 2015-08-26
        • 1970-01-01
        • 2016-11-10
        • 2020-11-29
        • 2018-06-03
        • 1970-01-01
        相关资源
        最近更新 更多