Revised: 17th/June/2002
サーブレットと同様、 JSP でも HTML フォームから送信データを受け取れます。JSP の場合は、 GET と POST を区別する必要はありません。送信するデータの内容に応じて、 URL につなげて短いデータを送る場合は GET メソッド、 URL とは分けて長いデータを送りたいときは POST メソッドを使えばよいでしょう。
次の HTML フォームからデータを送信します。 POST メソッドで、同じディレクトリ中の form.jsp へデータをポストします。
<?xml version="1.0" encoding="Shift_JIS" standalone="no"?>
<!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>HTML Form for JSP</title>
</head><body>
<form action="./FormJSP.jsp" method="POST">
<table border="1">
<tr><th>名前</th>
<td><input type="text" name="namae" size="20" /></td></tr>
<tr><th>性別</th>
<td><input type="radio" name="sei" value="male" />male
<input type="radio" name="sei" value="female" />female</td></tr>
<tr><th>生年</th>
<td><select name="seinen">
<option value="1970">1970</option>
<option value="1971">1971</option>
<option value="1972">1972</option>
<option value="1973">1973</option>
<option value="1974">1974</option>
<option value="1975">1975</option>
<option value="1976">1976</option>
<option value="1977">1977</option>
<option value="1978">1978</option>
<option value="1979">1979</option>
</select></td></tr>
<tr><th>スキル</th>
<td><table>
<tr><td><input type="checkbox" name="skills" value="C" />C/C++</td>
<td><input type="checkbox" name="skills" value="Java" />Java</td>
<td><input type="checkbox" name="skills" value="COBOL" />COBOL</td>
<td><input type="checkbox" name="skills" value="HTML" />HTML/CSS</td></tr>
<tr><td><input type="checkbox" name="skills" value="Shell" />Shell</td>
<td><input type="checkbox" name="skills" value="Perl" />Perl</td>
<td><input type="checkbox" name="skills" value="PHP" />PHP</td>
<td><input type="checkbox" name="skills" value="JavaScript" />JavaScript</td>
</table></td></tr>
<tr><th>コメント</th>
<td><textarea cols="40" rows="5" name="comment">コメント記入</textarea></td></tr>
</table>
<p><input type="submit" name="submit" valur="送信" />
<input type="reset" name="reset" valur="リセット" /></p>
</form>
</body></html>
このソースを、ドキュメント・ルート内の適当な HTML 文書に貼り付けてください。この HTML ファイルと同じ場所に、このフォームデータを処理する JSP を作成します。ここでは、 C:\DocRoot\formHTML.html に保存します。
上記 HTML ソースの表示例を載せておきます。このサーバは設定していないのでボタンを押しても働きません。
上記 HTML ファイルと同じ場所に、このフォームデータを受け取って処理する JSP を作成します。ここでは、 C:\DocRoot\FormJSP.jsp に保存します。
<%@page contentType="text/html; charset=Shift_JIS" %> <% request.setCharacterEncoding("Shift_JIS"); %> <?xml version="1.0" encoding="Shift_JIS" standalone="no"?> <!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> <title>フォームを処理する JSP</title> </head> <body> <h1>フォームを処理する JSP</h1> <table border="1"> <tr><td>名前</td><td><%= request.getParameter("namae") %></td></tr> <tr><td>性別</td><td><%= request.getParameter("sei") %></td></tr> <tr><td>生年</td><td><%= request.getParameter("seinen") %></td></tr> <tr><td>スキル</td><td> <% String[] skills = request.getParameterValues("skills"); for (int i = 0; i < skills.length; i++) { %> [<%= skills[i] %>] <% } %> </td></tr> <tr><td>コメント</td><td><%= request.getParameter("comment") %></td></tr> </table> </body> </html>
ちなみに、この例のようにスクリプトを多用することは、保守/管理上望ましくありません。スクリプトが必要な部分は bean を使って、 JSP から呼び出すようにすべきです。
仮に、 HTML フォームは C\DocRoot\formHTML.html であり、フォームを処理する JSP は C:\DocRoot\FormJSP.jsp を保存したとします。このとき、Tomcat の conf/server.xml で C:\DocRoot がドキュメント・ルート /webAppl に関連付けられていれば、HTML フォームは次の URL からアクセスできます。
http://localhost:8080/webAppl/formHTML.html
![]() |
図:formHTML.html の表示例 |
適当なデータを入力して、「送信」ボタンを押して、 JSP が正しく処理したかどうか確認できます。
![]() |
図:FormJSP.jsp の表示例 |