Servlets 如何在servlet中获取表单参数?request.getAttribute不起作用
是否可以让同一个servlet执行验证?看起来这里可能需要使用某种递归,但当我在电子邮件框中键入某些内容并单击submit时,电子邮件参数仍然为空。 单击提交后,URL将更改为:Servlets 如何在servlet中获取表单参数?request.getAttribute不起作用,servlets,forms,http-request-parameters,Servlets,Forms,Http Request Parameters,是否可以让同一个servlet执行验证?看起来这里可能需要使用某种递归,但当我在电子邮件框中键入某些内容并单击submit时,电子邮件参数仍然为空。 单击提交后,URL将更改为:http://localhost/servlet/EmailServlet?Email=test 页面显示了Email:null和文本框,但我希望它能通过验证功能(即不为null)。有可能实现这种递归行为吗 public class EmailServlet extends HttpServlet { publ
http://localhost/servlet/EmailServlet?Email=test
页面显示了Email:null
和文本框,但我希望它能通过验证功能(即不为null)。有可能实现这种递归行为吗
public class EmailServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String theForm =
"<FORM METHOD=\"GET\" ACTION=\"EmailServlet\">\n<INPUT TYPE=\"TEXT\" NAME=\"Email\"><P>\n"
+ "<INPUT TYPE=\"SUBMIT\">\n</FORM>";
String email = (String) request.getAttribute("Email");
// Bogus email validation...
if( email == null )
{
out.println("Email: " + email + "\n" + theForm);
}
else if(emailAddressNotBogous(email))
{
out.println("Thank you!");
}
else
{
out.println("“Invalid input. Please try again:\n" + theForm);
}
out.flush();
}
}
公共类EmailServlet扩展了HttpServlet{
公共无效数据集(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException
{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
串模板=
“\n\n”
+“\n”;
String email=(String)request.getAttribute(“email”);
//虚假电子邮件验证。。。
如果(电子邮件==null)
{
out.println(“电子邮件:“+Email+”\n“+theForm”);
}
else if(emailAddressNotBogous(电子邮件))
{
out.println(“谢谢!”);
}
其他的
{
out.println(““无效输入。请重试:\n”+表单);
}
out.flush();
}
}
更新:正如公认的答案所指出的,代码中存在错误。将getAttribute更改为getParameter可修复“问题”:
String email=(String)request.getAttributegetParameter(“email”);您可以将表单的方法设置为POST,然后在servlet中实现doPost()方法。将调用doGet()来显示表单,并调用doPost()来处理表单提交
或者,您可以使用doGet()方法测试是否存在任何参数。如果没有,则只显示表单。如果有,则处理提交…要在您使用的servlet中获取表单参数,请执行以下操作:
request.getParameter("Email");
是的,您可以使用同一个servlet,但使用两个不同的servlet会更容易做到这一点。在不将方法更改为POST的情况下是否可以做到这一点?@Vincent DOH!我不敢相信我做到了……感谢您指出我的错误,现在一切都正常了。