Servlet日記(1999/02/15)

本日の成果

 前回はGETメソッドで送信したデータを受け取るプログラムを作成しましたが、今回はPOSTメソッドで送信したデータを受け取ってみます。調べてみると、GETメソッドと同じく、getParameterNames()メソッドで名前を獲得し、個々の名前についてgetParameter()メソッドを呼び出せば値が得られます。というわけで、送信したデータを受け取る処理は、前回とまったく同じです。内容の割にリストが長いのは、POSTを実行するためのフォームを含むHTMLドキュメントをGETメソッドで返す処理があるからです。

public void doGet(
    HttpServletRequest req,
    HttpServletResponse res
) throws ServletException, IOException
{
    res.setContentType("text/html");
    PrintWriter out = res.getWriter();
    out.print("<html><head><title>PostData Servlet</title></head>");
    out.print("<body><form method=post>data1:<input type=text name=\"data1\">");
    out.print("<br>data2:<input type=text name=\"data2\"><br>");
    out.print("<input type=submit value=\"Post\"></form></body></html>");
}

public void doPost(
    HttpServletRequest req,
    HttpServletResponse res
) throws ServletException, IOException
{
    res.setContentType("text/plain");
    PrintWriter out = res.getWriter();

    Enumeration enum = req.getParameterNames();
    while (enum.hasMoreElements()) {
        String name  = (String)enum.nextElement();
        String value = req.getParameter(name);
        out.println(name + "=" + value);
    }
}

本日の教訓

 POSTメソッドで送られたデータを得るにも、GETメソッドと同じように、名前と値に分解するメソッドを使おう。

Servlet日記(1999/02/14) Servlet日記の目次 Servlet日記(1999/02/20)