Java httpservlet参数为空

Java httpservlet参数为空,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我有一个带有表单的jsp页面。提交后,它将调用一个httpservlet类。但是所有getParameter()操作都返回null。我做错了什么 JSP 编辑 -我正在使用TomcatV8.0 -如果执行doPost(…)方法,我将获得一个带有System.out.println(a)的输出是空的我没有足够的声誉发表评论,所以如果你不介意的话,我把它作为答案 请确保您以前没有在httpServletRequest上调用其他方法,例如getReader()或getInputStream()。在这些

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

JSP

编辑

-我正在使用TomcatV8.0


-如果执行doPost(…)方法,我将获得一个带有
System.out.println(a)的输出
是空的

我没有足够的声誉发表评论,所以如果你不介意的话,我把它作为答案

请确保您以前没有在
httpServletRequest
上调用其他方法,例如
getReader()
getInputStream()
。在这些调用之后,您无法访问post参数。


<form action="GatherController" method="post"><input type="text" name="a"/>
请使用双引号,它可能有效


<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);
    }
}
@覆盖
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
String firstname=request.getParameter(“firstname”);
字符串lastname=request.getParameter(“lastname”);
字符串email=request.getParameter(“email”);
HttpSession session=request.getSession(false);
if(//处理您的逻辑){
打印(“

”>创建的帐户“

”; RequestDispatcher rd=request.getRequestDispatcher(“index.jsp”); 转发(请求、响应); }否则{ 打印时出现错误(“

”); RequestDispatcher rd=request.getRequestDispatcher(“newuser.jsp”); 包括(请求、响应); } }


您使用的服务器是什么?您是否绝对肯定表单提交控件来自您的GatherController的doPost方法?您是否也与b进行了检查?b值是多少?对于要注册控制器的servlet容器,GatherController.class应该位于
WEB-INF/classes
目录中。。我希望它已经在那里了:)我已经检查了你的代码,它对我有效。我使用
out.println(a)
(在浏览器中打印)来打印,而不是
System.out.println(a)(在控制台中打印)@Arkantos如何注册控制器?
<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>
@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);
    }
}