Revised: 14th/June/2002
HTML の form 要素からのデータをサーブレットが受け取って、その処理を返すことができます。そもそもこの要素は form は HTTP プロトコルで実装している GET メソッド、POST メソッドを送れます。
いずれにせよ、 HTML 文書のプロトコルは HTTP であり、そのためのメソッドを実装するには javax.servlet.http.HttpServlet
抽象クラスを継承する必要があります。
GET メソッドは、 URL に続けてフォームデータを送信します。例えば、 http://localhost/index.html
に [name="namae"
, value="atai"
] と [name="toshi"
, value="26"
] で送信すると、 http://localhost/index.html?namae=atai&toshi=26
のようになります。これは単なる URL 要求であり、データは環境変数としてセットされます。
POST メソッドは、 URL とは別にデータを送信するための仕組みです。 GET メソッドがサイズの制限があるのに対して、 POST メソッドにはありません。POST メソッドのデータは標準入力として扱われます。
HTML 文書で form を作るソースの抜粋を載せておきます。
これは、 GET メソッドでこのページを置いたサーバのリソース "/myAppl/servlet/GetDemo
" にデータを送信するフォームです。Tomcat の場合は、 /myAppl
にマップされたドキュメント・ルート内の WBE-INF/classes
内の GetDemo.class
になります。
<form action="/myAppl/servlet/GetDemo"> <p>GET メソッドのフォームの例</p> <table> <tr><th>name:</th><td><input type="text" name="namae" size="30" /></td></tr> <tr><th> age:</th><td><input type="text" name="toshi" size="2" maxlength="2" /></td></tr> <tr><th> sex:</th><td><input type="radio" name="sei" value="male" />male <input type="radio" name="sei" value="female" />female</td></tr> <tr><th>message:</th><td><input type="text" name="memo" size="50" /></td></tr> <tr><td></td><td><input type="submit" name="submit" value="submit" /></td></tr> </table> </form>
これは、 POST メソッドでこのページを置いたサーバのリソース "/myAppl/servlet/PostDemo
" にデータを送信するフォームです。Tomcat の場合は、 /myAppl
にマップされたドキュメント・ルート内の WBE-INF/classes
内の PostDemo.class
になります。
<form action="/myAppl/servlet/PostDemo" method="POST">
<p>POST メソッドのフォームの例</p>
<table>
<tr><th>name:</th><td><input type="text" name="namae" size="30" /></td></tr>
<tr><th> age:</th><td><input type="text" name="toshi" size="2" maxlength="2" /></td></tr>
<tr><th> sex:</th><td><input type="radio" name="sei" value="male" />male
<input type="radio" name="sei" value="female" />female</td></tr>
<tr><th>message:</th><td><input type="text" name="memo" size="50" /></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="submit" /></td></tr>
</table>
</form>
本サイトが置かれているサーバは設定していないので実際は動作しませんが、上のサンプルの表示例を載せておきます。
HTTP の GET メソッドと POST メソッドを受け取る Java サーブレットのメソッドは、 doGet()
と doPost()
になります。
public void doGet(HttpServletRequest req, HttpServletResponse res)
public void doPost(HttpServletRequest req, HttpServletResponse res)
これらのメソッドは javax.servlet.http.HttpServlet
抽象クラスで宣言されています。