GET メソッド

Revised: 14th/June/2002

HTML フォーム

GET メソッドでデータを送るフォームの HTML ソースです。これを、テキスト・エディタにコピーして、ドキュメント・ルート /webApplget.html に保存してください。Tomcat のインストール・ディレクトリの conf ディレクトリの中の servlet.xml で、ドキュメント・ルートが C:/DocRoot に指定されている場合は、C:\DocRoot\get.html になります。保存時に文字コードが指定できる場合は Shift_JIS (SJIS) を選んでください。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS" />
<title>GET メソッドのフォーム</title>
</head>
<body>
<h1>HTTP GET メソッド</h1>

<form action="/webAppl/servlet/GetDemo" method="GET">
<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="送信" /></td></tr>
</table>
</form>

</body>
</html>

これは、このページを置いたサーバのリソース "/webAppl/servlet/GetDemo" に、 GET メソッドでデータを送信するフォームです。Tomcat の場合は、 /webAppl にマップされたドキュメント・ルート内の WEB-INF/classes 内の GetDemo.class になります。

上記フォームの表示例です。

GET メソッドのフォームの例

name:
age:
sex:male female
message:

サーブレットのサンプル

上記 HTML ソースは"/webAppl/servlet/GetDemo" にデータを送信するフォームなので、 /webAppl にマップされたドキュメント・ルート内の WBE-INF/classes 内に、次の GetDemo.class をコンパイルして保存しておきましょう。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class GetDemo extends HttpServlet {

	public void doGet(HttpServletRequest req, HttpServletResponse res)
	throws ServletException, IOException {

		// 要求文字コードのセット
		req.setCharacterEncoding("Shift_JIS");
		// 応答文字コードのセット
		res.setContentType("text/html; charset=Shift_JIS");
		// 出力ストリームの取得
		PrintWriter out = res.getWriter();

		String title = "HTTP GET メソッド・デモ";

		// フォームデータの取得
		String[] msg = new String[8];
		msg[0] = "名前";
		msg[1] = req.getParameter("namae");
		msg[2] = "年齢";
		msg[3] = req.getParameter("toshi");
		msg[4] = "性別";
		msg[5] = req.getParameter("sei");
		msg[6] = "メモ";
		msg[7] = req.getParameter("memo");

		// クライアント(ブラウザ)への出力
		out.println("<html lang=\"ja\">");
		out.println("<head><title>" + title + "</title>");
		out.println("</head><body>");
		out.println("<h1>" + title + "</h1>");
		out.println("<table border=\"1\">");
		for (int i = 0; i < 4; i++) {
			out.println("<tr><th>" + msg[2 * i] + "</th><td>"
				 + msg[2 * i + 1] + "</td></tr>");
		}
		out.println("</table>");
		out.println("</body></html>");

		// 出力ストリームを閉じる
		out.close();
	}

}

Tomcat のインストール・ディレクトリの conf ディレクトリの中の servlet.xml で、ドキュメント・ルートが C:/DocRoot に指定されている場合は、次のようにコンパイルします。但し、 Tomcat のインストール・ディレクトリが C:\Program Files\Apache Tomcat 4.0 であるものとします。これはインストール時に特に設定しなかった場合のデフォルトです。

C:\>cd DocRoot\WEB-INF\classes

C:\DocRoot\WEB-INF\classes>javac -classpath "C:\Program Files\Apache Tomcat 4.0\
common\lib\servlet.jar" GetDemo.java

C:\DocRoot\WEB-INF\classes>

上記実行例の改行はウェブサイトでの公開の便宜上のものであり、実際は改行せずに連続して入力してください。また、OSの CLASSPATH 変数に設定すれば、コンパイル時の -classpath オプションは不要です。

実行

前掲の HTML 文書 get.html へは次の URL でアクセスします。

http://localhost:8080/webAppl/get.html

開いた HTML 文書のフォームに適当なデータを入力して「送信」ボタンを押してください。

前掲の GetDemo.java が実行されます。

GET メソッドのフォームの入力例
図:GET メソッドのフォームの入力例

このフォームを実行した場合のサーブレットによる出力結果は次のようになります。

<html lang="ja">
<head><title>HTTP GET メソッド・デモ</title>
<body>
<h1>HTTP GET メソッド・デモ</h1>
<table border="1">
<tr><th>名前</th><td>菅井学</td></tr>
<tr><th>年齢</th><td>26</td></tr>
<tr><th>性別</th><td>male</td></tr>
<tr><th>メモ</th><td>最も崇高なものは無償の愛であるといっても、当然過ぎる人間孤独の
相を審らかにするだけで野暮である。</td></tr>
</table>
</body></html>
GET メソッドのサーブレットの実行例
図:GET メソッドのサーブレットの実行例

GET 要求は URL に続けてデータを送信し、サーバの環境変数にセットします。従って、ブラウザのアドレス窓には、リソース要求の URL の後ろに送信したデータが繋げられています。



Copyright © 2002 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送