Servlet/JSP基礎編06 パラメータ名の取得
作成するプログラム
今回のプログラムでは、リクエストパラメータの名前を取得する方法を解説したいと思う。リクエストパラメータの名前とは、HTML文書の方でタグの中に書かれている、name属性の名前のことである。この名前を取得し、画面上に、リクエストパラメータ名とそこに格納されている値を表示したいと思う。
HTMLの作成
HTMLは前回と似たような形のものにしたいと思う。セレクトボックスと、ラジオボタン、チェックボックスを利用する。
プログラムは下記の通りになる。
具体的なプログラムの内容は、レストランの予約のページである。
まず、セレクトボックスで、予約人数の選択、ラジオボックスで、座席の選択、チェックボックスでオプションの選択ができる。そして、予約のボタンを押せば、サーブレットにリクエストを送られる。
サーブレットの方では、このHTMLの「name属性」と、そこの値を取り出すことが目的である。
サーブレットの作成
作成するサーブレットは先ほど説明した通り、リクエストパラメータ名と、値を取り出すことが目的のプログラムを作成する。
まず、リクエストパラメータ名を取得するには、getParameterNamesメソッドを利用することで手に入れることができる。
しかし、このメソッドの戻り値はEnumerationオブジェクトである。なので、通常の変数には、格納することができない。そこで、Collectionクラスのlistメソッドを使い、ArrayListに変換をし、繰り返し処理で表示することにする。
下記はサーブレットプログラムである。
リクエスト引数やレスポンス変数を使う前には、文字エンコーディングをしないといけないので、「setContentType」「setCharacterEncoding」を使用する。
そして、ArrayList配列のnamesにlistメソッドを利用して、リクエストパラメータ名を全て格納する。
繰り返し処理の中では、「getParameterValues」を使う。これは、「getParameter」が一つの値を取り出すのに対し、「getParameterValues」は複数の値を取り出すことができる。
配列valuesに値をいれ、もう一つの繰り返し処理で、
「リクエストパラメータ名 = リクエストパラメータ」のように表示する。
ブラウザの画面は以下のようになる。
人数は2で、座席は喫煙、オプションはケーキと花束で選択した。
サーブレットから返信された画面は以下である。
count=2
seat=喫煙
option=ケーキ
option=花束
「count」「seat」「option」はパラメータ名である。countやseatは値が一つしかないので、一つのみ表示されるが、「option」は0~2個の選択が可能であるから、複数であるときは、「getParameterValues」で複数取り出されていることがわかる。
おわりに
今回はデバッグの際に必要となるリクエストパラメータ名の取り出し方を解説した。これを利用すれば、どのタグがどのような値を取っているのかわかる。