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 の後ろに送信したデータが繋げられています。