エンタープライズ:特集 2003/06/24 00:00:00 更新

JSPプログラミング入門
第3回:HTMLエンコードが必要なJSPプログラミングの基本 (5/5)

イメージボタン

 イメージボタンは、「SUBMIT」ボタンの代わりに利用するものであり、ボタンの代わりに画像を表示する。次のようなタグを用いればよい。

<INPUT type="IMAGE" src="画像ファイル名" name="フィールド名">

 イメージボタンは、クリックされると、そのクリックされたX座標が「フィールド名.x」、Y座標が「フィールド名.y」という、フィールド名とした値にそれぞれ設定される。例えば、次のようなイメージボタンがあるとする。

<INPUT type="IMAGE" src="foo.jpg" name="imgbtn">

 この場合には、ユーザーが、X座標50、Y座標30の点をクリックした場合、「getParameter("imgbtn.x")」値は「50」、「getParameter("imgbtn.y")」は「30」となる。

ボタン類

 「SUBMIT」ボタンは、入力フォームに複数設けることもできる。複数の「SUBMIT」ボタンを設置する理由は、どのボタンが押されたかで処理を変えたい場合だろう。JSPでは、どのボタンが押されたのかを「getParameter」メソッドで判断できる。例えば、次のように3つの「SUBMIT」ボタンがあるとする。

<INPUT type="SUBMIT" name="button1" value="ボタン1">
<INPUT type="SUBMIT" name="button2" value="ボタン2">
<INPUT type="SUBMIT" name="button3" value="ボタン3">

 この場合にボタン1が押されたとすると、「getParameter("button1")」値は、「value」アトリビュートに指定してある「ボタン1」となり、残る「getParameter("button2")」、「getParameter("button3")」の値はnullとなる。よってこれらをif文などで条件判断すれば、どのボタンが押されたのかが判断できるわけだ。例えば、次に挙げるリスト9のように指定すればよい。

リスト9■複数ボタンの判定
  1: <%
  2:   if (request.getParameter("button1") != null)
  3:   {
  4:     out.println("ボタン1が押されました<BR>");
  5:   }
  6:   if (request.getParameter("button2") != null)
  7:   {
  8:     out.println("ボタン2が押されました<BR>");
  9:   }
 10:   if (request.getParameter("button3") != null)
 11:   {
 12:     out.println("ボタン3が押されました<BR>");
 13:   }
 14: %>

One Point:
「SUBMIT」ボタンの「value」アトリビュートは、入力フォームに表示されるボタンのラベル名としてユーザーに見える。よってほとんどの場合には、「value」アトリビュートには日本語を設定することになるだろう。この場合、「getParameter」メソッドで得られる値は、テキストフィールドと同じく「ISO-8859-1」コードとなる。リスト9では、nullではないことを判定している点から、文字コードが何であっても問題はない。しかし、「compareTo」メソッドなどで「valueアトリビュートの値を比較する場合には、リスト3で示すようなUnicodeへの変換処理が必要となるのだ。

日本語処理にはUnicode処理が必須だと理解しておこう

 今回は、入力フォームに入力されたデータをJSPからどのようにして取得するのか、そして、どのようにして結果をクライアントに返すのかという基本的な概念についてを解説してきた。

 JSPは、標準で文字コードをISO8859-1として扱うため、必ず今回説明したような、Unicodeへの変換処理が必要となる。この点は必ず押さえておかなければならないポイントだ。ここで解説した概念を忘れずに、日本語処理の問題さえ理解してしまえば、JSPにおける入出力はそれほど複雑ではない。

 この連載記事「JSPプログラミング入門で」今回で終了だが、7月に公開予定の次期連載では、PostgreSQLとの連携方法についてをお送りする。

前のページ | 1 2 3 4 5 |      

[大澤文孝,ITmedia]