| 6.JSP のFORM処理 |
| 1 作成例仕様 |
webapps (ルート) ・・・ "C:\Program Files\Apache Group\Tomcat 4.1\webapps\" │ ├─ examples ─┬─ jsp ─┬─ formjsp.html │ │ └─ formjsp.jsp │ │ │ └─ WEB-INF
Servlet/JSP はTomcat 側に連携しますが、HTML 文書のリクエストはApache 側のドキュメントルート(私のは C:\sgi\public_html )を探して実行されます。そこで、Tomcat 側のフォルダーのHTML 文書も実行したければ、Apache 側にもエイリアス定義でドキュメントルートを追加すれば解決します。
(4) 実行例
| 2 FORM 送出JSP の説明 |
<html 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">
<caption> アンケートにお答えください
<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="ages">
<option value="1">20未満</option>
<option value="2">20-29</option>
<option value="3">30-39</option>
<option value="4">40-49</option>
<option value="5">50-59</option>
<option value="6">60以上</option>
</select></td></tr>
<tr><th>経験</th>
<td><table>
<tr><td><input type="checkbox" name="skills" value="ACCESS">ACCESS</td>
<td><input type="checkbox" name="skills" value="MySQL">MySQL</td>
<td><input type="checkbox" name="skills" value="PostgreSQL">PostgreSQL</td>
<td><input type="checkbox" name="skills" value="Oracle">Oracle</td></tr>
<tr>
<td><input type="checkbox" name="skills" value="SQLServer">SQLServer</td>
<td><input type="checkbox" name="skills" value="DB2">DB2</td>
<td><input type="checkbox" name="skills" value="Sybase">Sybase</td>
<td><input type="checkbox" name="skills" value="Informix">Informix</td>
</table></td></tr>
<tr><th>コメント</th>
<td><textarea cols="45" rows="3" name="comment">
Please type in!</textarea></td></tr>
</table>
<p><input type="submit" value="送信" >
<input type="reset" value="リセット" ></p>
</form>
</body></html>
|
JSP に関係するのは、起動するJSP ( FORM の ACTION )と各入力コントロールで定義した名前(INPUT 要素の NAME 属性で指定した名前)です。起動JSP 側は、この名前で、入力データを受け取ることができます。
| 3 JSP のFORM 処理説明 |
<%@page contentType="text/html; charset=Shift_JIS" %>
<% request.setCharacterEncoding("Shift_JIS"); %>
<html lang="ja">
<head>
<title>JSPのFORM処理</title>
</head>
<body>
<h1>JSPのFORM処理</h1>
<table border="1">
<caption> アンケート結果
<tr><td>名前</td><td>
<%= request.getParameter("namae") %>
</td></tr>
<tr><td>性別</td><td>
<%= request.getParameter("sei") %>
</td></tr>
<tr><td>年齢</td><td>
<% String wages = request.getParameter("ages"); %>
<%
String wagesdat="";
if(wages.equals("1")){ wagesdat = "20未満"; }
if(wages.equals("2")){ wagesdat = "20-29"; }
if(wages.equals("3")){ wagesdat = "30-39"; }
if(wages.equals("4")){ wagesdat = "40-49"; }
if(wages.equals("5")){ wagesdat = "50-59"; }
if(wages.equals("6")){ wagesdat = "60以上"; }
%>
<%= wagesdat %>
</td></tr>
<tr><td>経験</td><td>
<%
if((request.getParameterValues("skills"))!=null){
String[] wskills =
request.getParameterValues("skills");
for (int i = 0; i < wskills.length; i++) {
%>
[<%= wskills[i] %>]
<% } } %>
</td></tr>
<tr><td>コメント</td>
<td><%= request.getParameter("comment") %></td></tr>
</table>
</body>
</html>
|
名前の値を表示 性別の値を表示 年齢の値を取得 初期値設定 値=1か 値=2か 値=3か 値=4か 値=5か 値=6か 年齢を表示 経験の値ありか 複数ある値を 配列へ格納 要素分ループ 内容[i]を表示 if & forエンド コメントを表示 |
| No | 箇 所 | 意 味 |
|---|---|---|
| 1 | request.getParameter("namae") | FORM 入力項目単一の値を取得。 「6. doPostとForm処理」を参照 |
| 2 | request.getParameterValues("skills") | FORM 入力項目複数の値を取得。 「6. doPostとForm処理」を参照 |
| 3 | <%= wagesdat %> | java.lang.String型に変換されて出力されます。 「4. JSP のスクリプト」の式を参照 |