Java httpservlet参数为空
我有一个带有表单的jsp页面。提交后,它将调用一个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()。在这些
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);
}
}