2007年10月17日水曜日

GET と POST

HTTP GETハイパーリンクから呼び出せる
パラメーターはクエリ情報として追加できる

HTTP POST
パラメータはボディに格納して送信される。

HTML ファイルからサーブレットへ送信

ハイパーリンク(GET)
<a href="/SCWCD/Sample2?message=Hi everyone">Sample2</a>
Hi everyone がサーブレットで表示される

form で送信(GET)
<form action="/SCWCD/Sample2">
<input type="text" name="message" size="30" maxlength="15" /><br />
<input type="submit" value="送信"/>
</form>
form の method 属性のデフォルトは get
入力したテキストがサーブレットで表示される

次のサンプルはサーブレットで doGet メソッドを定義していませんが、
service メソッドをオーバーライドして doPost を定義しています。
全てのリクエストは service を通るのでそこから doPost が呼び出されるので正常に動く。

Sample2.java
import java.io.*;

import javax.servlet.ServletException;
import javax.servlet.*;
import javax.servlet.http.*;

public class Sample2 extends HttpServlet {
    @Override
    public void service(ServletRequest req, ServletResponse res) {
        try {
            doPost((HttpServletRequest)req, (HttpServletResponse)res);
        } catch (ServletException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {

        PrintWriter out = res.getWriter();
        out.println("<html><body>");
        out.println(req.getParameter("message"));
        out.println("</body></html>");
    }
}

0 件のコメント: