―Servlet/JSPリファレンス―

@ITハイブックス編
2003/10/24
Javaプログラミング
ワンポイントレクチャーについて

  Formデータの取得

   ワンポイントQuestion

  HTTPパラメータの値を取得するメソッドは、次のうちどれですか? ただし、選択肢のメソッドの引数は便宜上省略してあります。(複数選択)

A getParameter()
B getParameterNames()
C getAttribute()
D getParameterValues()
E getValue()

   解説

 HTTPパラメータの値をサーブレット内で取得する場合は、サービスメソッド(doGet、doPostなど)に渡されるHttpServletRequestの、以下のメソッドを使用して獲得することができます。

  • String getParameter(String name)
  • String[] getParameterValues(String name)

 どちらのメソッドも引数にはパラメータ名を与えます。パラメータ名に対応する値がある場合、パラメータ値をメソッドの戻り値で獲得することができます。存在しないパラメータ名の場合にはnullが戻されます。2つのメソッドは、以下のように使い分けます。

getParameter()
引数で与えるパラメータ名に対応する値が1つだけの場合に使用します。

getParameterValues()
引数で与えるパラメータ名に対応する値が複数ある場合に使用します。

 具体例を通して使い方を見てみましょう。まず、以下の画面をご覧ください。

入力フォーム

 入力欄として、「名前」と「興味のあるスポーツ」があります。このHTMLファイルのFORMタグは次のようになっています。

<FORM action="/j2ee/InputFormServlet" method="post">
名前: <INPUT type="text" name="name" size="20"><BR>
<BR>興味のあるスポーツ<BR>
<SELECT size="5" name="sports" multiple>
<OPTION value="baseball" selected>野球</OPTION>
<OPTION value="soccer">サッカー</OPTION>
<OPTION value="tennis">テニス</OPTION>
<OPTION value="golf">ゴルフ</OPTION>
<OPTION value="other">そのほか</OPTION>
</SELECT>
<BR><BR>
<INPUT type="submit" name="submit" value="送信">
</FORM>

 「名前」の入力欄には、nameという名前、「興味のあるスポーツ」のリストには、sportsという名前が付けられています(斜字体部)ので、サーブレットで入力された値を獲得するためには

String name = req.getParameter("name"); //名前
String[] sports = req.getParameterValues("sports"); //スポーツ

とします。「興味あるスポーツ」は対応する値が複数ある(複数選択可)ので、getParameter()ではなく、getParameterValues()を使用します。

 本問題では、「HTTPパラメータの値…」とありますので、選択肢BのgetParameterNames()は、正解から外しています。getParameterNames()は、HTTPパラメータの名前一覧を取得するメソッドです。

POINT
HTTPパラメータ名の一覧を獲得する場合は、Enumeration getParameterNames()でパラメータ名一覧を獲得することができます。

KEYWORD
FORMタグ
ブラウザで入力したデータを、サーバへ送信するときに使用するHTMLタグです。

   ワンポイントQuestionの解答

正解 A、D

Java2ラーニングブック −Web Component Developer編−

本記事は@ITハイブックスシリーズ「J2EEラーニングブック −Web Component Developer編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。

 

Javaプログラミング・ワンポイントレクチャー INDEX





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間