―Servlet/JSPリファレンス―
@ITハイブックス編
2003/10/24
|
ワンポイント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