3

同じサーブレットに検証を実行させることは可能ですか?ここで何らかの再帰を利用する必要があるようですが、電子メールボックスに何かを入力して[送信]をクリックすると、電子メールパラメータは空白のままになります。[送信]をクリックすると、URLが次のように変わります。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( "Email");

4

2 に答える 2

3

サーブレットでフォームパラメータを取得するには、次を使用します。

  request.getParameter("Email");

はい、同じサーブレットを使用できますが、これを行うには2つの異なるサーブレットを使用する方がはるかに簡単です。

于 2010-02-18T21:23:13.517 に答える
1

フォームのメソッドをPOSTに設定してから、サーブレットにdoPost()メソッドを実装することができます。doGet()が呼び出されてフォームが表示され、doPost()が呼び出されてフォームの送信が処理されます。

または、doGet()メソッドでパラメーターの存在をテストすることもできます。ない場合は、フォームを表示するだけです。その後、提出を処理する場合...

于 2010-02-18T21:22:09.823 に答える