Revised: 14th/June/2002
GET メソッドでデータを送るフォームの HTML ソースです。これを、テキスト・エディタにコピーして、ドキュメント・ルート /webAppl の get.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 になります。
上記フォームの表示例です。
上記 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 メソッドのフォームの入力例 |
このフォームを実行した場合のサーブレットによる出力結果は次のようになります。
<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 要求は URL に続けてデータを送信し、サーバの環境変数にセットします。従って、ブラウザのアドレス窓には、リソース要求の URL の後ろに送信したデータが繋げられています。