libro
www.tuyano.com
初心者のためのJSP/サーブレット入門

クライアント=サーバー間の値の受け渡し (2/4)

作成:2012-05-03 13:20
更新:2012-05-03 13:50

■フォームの送信

ユーザーからの入力を受け取るといえば、やはり基本は「フォームの送信」でしょう。<form>タグによるフォームを用意し、これを送信してその送信結果を受け取り処理する、というものですね。HTMLの基本ともいえる機能です。

フォームから送信されたテキストというのも、やはり「getParameter」で取得することができます。こんな具合ですね。
String 変数  = request.
    getParameter( 名前 );
これで、フォームに用意されたコントロールから、引数に指定した名前の項目の値が取り出せます。注意して欲しいのは、「指定するのはIDではなく名前である」という点でしょう。<input id="hoge">というように、IDの指定だけでは値を取り出せません。必ずname属性を指定しておく必要があります。

また、「同じ名前の項目が複数ある」という場合に、それらの値をまとめて取り出すこともできます。これは「getParameterValues」というメソッドを使います。
String[] 変数  = request.getParameterValues( 名前 );
このgetParameterValuesは、引数で指定されたnameの値をすべてまとめたString配列を返します。これは、例えば複数項目が選択できる<select>タグから全値を取り出したりするのに用いられます。

では、これもサンプルを挙げておきましょう。下のリストは、フォームを自分自身のアドレスに送信し、入力された情報をまとめて表示する例です。ここではhelo.jspというファイル名で考えてありますので、別のファイル名を利用する場合は、<form>タグのactionを修正してください。

ここでは、送信されたフォームの(<select>以外の)情報は、getParameterを使って取り出しています。
String inpt = request.getParameter("input");
String chk = request.getParameter("check");
String rd = request.getParameter("radio");
いずれもnameで指定した名前を引数に指定していることがわかるでしょう。少々ややこしいのが、<select>の取得です。これは今回、複数項目を選択できるようにしてあるのです。
String[] sels = request.getParameterValues("select");
String sel = "";
if (sels != null){
    for(int i = 0;i < sels.length;i++)
        sel += sels[i] + " ";
}
まず、getParameterValuesでString配列を取り出します。そして繰り返しを使い、配列から1つずつ値を取り出してまとめていきます。ただし、全く値がない場合、getParameterValuesnullになり、for文は例外になりますから、nullでないことを確認の上で実行するのを忘れないようにしましょう。

※プログラムリストが表示されない場合

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>

※関連コンテンツ

「初心者のためのJSP/サーブレット入門」に戻る