サーブレットにフォームパラメータを取得する方法は? request.getAttributeは動作しません。

StackOverflow https://stackoverflow.com/questions/2292260

質問

これは、同じサーブレットが検証を行うことは可能ですか? 1つはここに再帰のいくつかの並べ替えを利用するかもしれないようだが、私は、電子メールボックスに何かを入力し、電子メールのパラメータを提出クリックしたときに、まだ空白になっています。 私は、[送信]をクリックした後、へのURLの変更: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();        
    }
}

更新:受け入れ答えが指摘したように、コード内のエラーが発生しました。 getParameterへのgetAttributeを変更すると、「問題」を修正:)。

文字列電子メール= <ストライキ>(文字列)要求<ストライキ>のgetAttribute のgetParameter( "電子メール");ます。

役に立ちましたか?

解決

お使いのサーブレットにフォームパラメータを取得するには、

  request.getParameter("Email");

そして、そう、あなたが同じサーブレットを使用することができますが、これを行うために、2つの異なるサーブレットを使用する方法が容易になります。

他のヒント

あなたはPOSTに、フォームのメソッドのセットを持っているし、その後、サーブレット内のdoPost()メソッドを実装することができます。 doGet()形式とdoPostメソッドを(表示するために呼び出されます)は、フォームの送信を処理するために呼び出されます。

別の方法としては、任意のパラメータの存在のためのdoGet()メソッドのテストを持つことができます。どんな存在しないならば、ちょうどフォームを表示します。その後、提出が処理している場合...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top