クライアント=サーバー間の値の受け渡し (2/4)
作成:2012-05-03 13:20
更新:2012-05-03 13:50
更新:2012-05-03 13:50
■フォームの送信
ユーザーからの入力を受け取るといえば、やはり基本は「フォームの送信」でしょう。<form>タグによるフォームを用意し、これを送信してその送信結果を受け取り処理する、というものですね。HTMLの基本ともいえる機能です。
フォームから送信されたテキストというのも、やはり「getParameter」で取得することができます。こんな具合ですね。
また、「同じ名前の項目が複数ある」という場合に、それらの値をまとめて取り出すこともできます。これは「getParameterValues」というメソッドを使います。
では、これもサンプルを挙げておきましょう。下のリストは、フォームを自分自身のアドレスに送信し、入力された情報をまとめて表示する例です。ここではhelo.jspというファイル名で考えてありますので、別のファイル名を利用する場合は、<form>タグのactionを修正してください。
ここでは、送信されたフォームの(<select>以外の)情報は、getParameterを使って取り出しています。
フォームから送信されたテキストというのも、やはり「getParameter」で取得することができます。こんな具合ですね。
String 変数 = request.これで、フォームに用意されたコントロールから、引数に指定した名前の項目の値が取り出せます。注意して欲しいのは、「指定するのはIDではなく名前である」という点でしょう。<input id="hoge">というように、IDの指定だけでは値を取り出せません。必ずname属性を指定しておく必要があります。
getParameter( 名前 );
また、「同じ名前の項目が複数ある」という場合に、それらの値をまとめて取り出すこともできます。これは「getParameterValues」というメソッドを使います。
String[] 変数 = request.getParameterValues( 名前 );このgetParameterValuesは、引数で指定されたnameの値をすべてまとめたString配列を返します。これは、例えば複数項目が選択できる<select>タグから全値を取り出したりするのに用いられます。
では、これもサンプルを挙げておきましょう。下のリストは、フォームを自分自身のアドレスに送信し、入力された情報をまとめて表示する例です。ここではhelo.jspというファイル名で考えてありますので、別のファイル名を利用する場合は、<form>タグのactionを修正してください。
ここでは、送信されたフォームの(<select>以外の)情報は、getParameterを使って取り出しています。
String inpt = request.getParameter("input");いずれもnameで指定した名前を引数に指定していることがわかるでしょう。少々ややこしいのが、<select>の取得です。これは今回、複数項目を選択できるようにしてあるのです。
String chk = request.getParameter("check");
String rd = request.getParameter("radio");
String[] sels = request.getParameterValues("select");まず、getParameterValuesでString配列を取り出します。そして繰り返しを使い、配列から1つずつ値を取り出してまとめていきます。ただし、全く値がない場合、getParameterValuesはnullになり、for文は例外になりますから、nullでないことを確認の上で実行するのを忘れないようにしましょう。
String sel = "";
if (sels != null){
for(int i = 0;i < sels.length;i++)
sel += sels[i] + " ";
}
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% String inpt = request.getParameter("input"); inpt = inpt == null ? "" : inpt; String chk = request.getParameter("check"); chk = chk == null ? "OFF" : "ON"; String rd = request.getParameter("radio"); rd = rd == null ? "" : rd; String[] sels = request.getParameterValues("select"); String sel = ""; if (sels != null){ for(int i = 0;i < sels.length;i++) sel += sels[i] + " "; } String str = "INPUT:" + inpt + "<br>" + "CHECK: " + chk + "<br>" + "RADIO: " + rd + "<br>" + "SELECT:" + sel; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Sample jsp</title> <style> h1 {font-size:16pt; background:#AAFFAA; padding:5px; } </style> </head> <body> <h1>Sample jsp page</h1> <p>これはサンプルで用意したページです。</p> <p><%=str %></p> <table> <form method="post" action="helo.jsp"> <tr><td>入力</td><td> <input type="text" id="input" name="input"></td></tr> <tr><td></td><td> <input type="checkbox" id="c1" name="check" value="Une"> <label for="c1">チェックボックス</label></td></tr> <tr><td></td><td> <input type="radio" name="radio" id="r1" value="first"> <label for="r1">ラジオボタン1</label><br> <input type="radio" name="radio" id="r2" value="Second"> <label for="r2">ラジオボタン2</label></td></tr> <tr><td></td><td> <select id="select" name="select" multiple> <option value="Eins">1つ目</option> <option value="Twei">2つ目</option> <option value="Drei">3つ目</option> </select></td></tr> <tr><td></td><td> <input type="submit" value="送信"></td></tr> </form> </table> </body> </html>
※関連コンテンツ