是否有可能具有相同的servlet执行验证?看来,人们可能要在这里利用某种递归的,但是当我在电子邮件框中输入一些东西,然后点击提交电子邮件参数仍是空白。 当我点击提交,网址更改为: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();        
    }
}

更新:为接受的答案指出,有在代码中的错误。改变的getAttribute到的getParameter解决“问题” :)。

的字符串的电子邮件= <击>(字符串)请求<击>的getAttribute 的getParameter( “电子邮件”);

有帮助吗?

解决方案

要得到一个servlet表格参数的使用:

  request.getParameter("Email");

是的,你可以使用同一个servlet,但它会比较容易的方式使用两个不同的servlet来做到这一点。

其他提示

你可以有窗体的方法设置为POST,然后实现在servlet一个doPost()方法。中的doGet()将被调用以显示形式和的doPost()将被调用来处理该表单提交。

替代地,你可以有任何参数的存在下doGet()方法测试。如果没有任何然后就显示形式。如果有,那么过程提交...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top