是否可以让相同的servlet执行验证?似乎人们可能必须在这里使用某种递归,但是当我在电子邮箱中输入内容并单击“提交”时,电子邮件参数仍为空白。
点击提交后,网址将更改为:http://localhost/servlet/EmailServlet?Email=test
页面显示Email: 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();
}
}
更新:正如接受的答案所指出的,代码中存在错误。将getAttribute更改为getParameter可修复“问题”:)。
String email = (String) request。 getAttribute getParameter(“Email”);
答案 0 :(得分:3)
要在您使用的servlet中获取表单参数:
request.getParameter("Email");
是的,您可以使用相同的servlet,但使用两个不同的servlet来实现这一目标会更容易。
答案 1 :(得分:1)
您可以将表单的方法设置为POST,然后在servlet中实现doPost()方法。将调用doGet()来显示表单,并调用doPost()来处理表单提交。
或者你可以对任何参数的存在进行doGet()方法测试。如果没有,那么只显示表格。如果有,那么处理提交...