6.JSP のFORM処理

サーブレットと同様、JSP でも HTML フォームから送信データを受け取れます。JSP の場合、 GET と POST を区別する必要はありません。ここでは、作成例をとおして説明していきます。

1 作成例仕様

 (1) 内容

 ブラウザーを開いて、スキル入力画面表示 HTML を起動し、氏名やスキル等を入力すると、その内容を JSP で表示する。

 (2) 作成するHTMLとJSP

   formjsp.html    入力FORM をJSP に送る
   formjsp.jsp     入力FORM を受け取り、結果を表示する

   ※保存先フォルダは次のとおりです。

 webapps (ルート)  ・・・  "C:\Program Files\Apache Group\Tomcat 4.1\webapps\"
   │
   ├─ examples ─┬─ jsp   ─┬─ formjsp.html
   │              │           └─ formjsp.jsp
   │              │      
   │              └─ WEB-INF 



 (3) 実行方法

    ※ブラウザのアドレスから直接指定

     http://127.0.0.1/examples/jsp/formjsp.html

    ※httpd.conf に 次のエイリアスを定義し、HTML のドキュメントルートを設定します。
     ( Servlet「 9 章 Tomcat ...の連動」を参照)

       Alias / "C:/Program Files/Apache Group/Tomcat 4.1/webapps/"

Servlet/JSP はTomcat 側に連携しますが、HTML 文書のリクエストはApache 側のドキュメントルート(私のは C:\sgi\public_html )を探して実行されます。そこで、Tomcat 側のフォルダーのHTML 文書も実行したければ、Apache 側にもエイリアス定義でドキュメントルートを追加すれば解決します。

 (4) 実行例



 名前、年齢、経験DB、コメントを入力し、送信ボタンを押すと、JSPがFORMの入力データを編集し表示します。





2 FORM 送出JSP の説明

 FORM のJSP 送出の作成例です。

 (1) ソース内容


<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 処理説明

 FORM 処理のJSP 作成例です。

 (1) ソース内容

<%@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箇 所意 味
 1request.getParameter("namae")FORM 入力項目単一の値を取得。
「6. doPostとForm処理」を参照
 2request.getParameterValues("skills")FORM 入力項目複数の値を取得。
「6. doPostとForm処理」を参照
 3 <%= wagesdat %>java.lang.String型に変換されて出力されます。
「4. JSP のスクリプト」の式を参照


 ※次のように、FORM 入力項目の単一の値を表示する場合、No1 と 3 の組合せで処理します。

  <%= request.getParameter("namae") %>  ・・・  namae の値をString型で出力



前の章(5.JSP のカスタムタグ)