Struts 3章 Beanタグライブラリ
- 3.1. Beanタグライブラリとは
- 3.2. defineタグ
- 3.3. parameterタグ/cookieタグ/headerタグ
3.3. parameterタグ/cookieタグ/headerタグ
parameterタグ・cookieタグ・headerタグはdefineタグに似ています。値を読み取り新しい変数を定義するのですが、値を読み取る先がparameterタグはHTTPリクエストパラメータ、cookieタグはクッキー、headerタグはHTTPヘッダーとなっています。またこれら3つのタグについては属性が同じで、以下のようになっています。
属性名 | 必須 | スクリプト 可能 |
説明 |
---|---|---|---|
id | ○ | 新しい変数名。指定のスコープに登録される際の名前にもなる。 | |
name | ○ | ○ | parameterタグの場合は読み取るHTTPリクエストパラメータ名、cookieタグの場合はクッキー名、headerタグの場合はHTTPヘッダー名。 |
value | ○ |
nameで指定した名前が存在しなかった場合、変数に設定する値を指定。デフォルト値。 |
|
multiple | ○ | 何らかの値が設定された場合、nameで指定した名前に該当する複数の値が変数に格納される。その時の変数の型は、cookieタグの場合はjavax.servlet.http.Cookie[]、それ以外のタグの場合はjava.lang.String[]になる。 |
以下の例では、「test」という名前のクッキーを探し、その値を「cookie_test」という変数に格納しています。defineタグのように特定のスコープに登録する事はしません。
<bean:cookie id="cookie_test" name="test" value="見つかりません" /> <%=cookie_test %>
value属性を指定せず、かつ指定の名前のクッキーが無かった場合には、例外が発生します。これはparameterタグ・headerタグでも同様です。
以下の例では、「name」という名前のHTTPリクエストパラメータを探し、その値を「param_name」という変数に格納しています。ただしmultiple属性が指定されているので、Stringの配列変数が作成されています。
<bean:parameter id="param_name" name="name" multiple="true" /> <% for(int i=0;i<param_name.length;i++){ %> <%=param_name[i] %><br> <% } %>
もし指定のパラメータが無く、かつvalue属性が指定されている場合には、value属性の値を格納した要素1の配列が生成されます。
(実習課題3)
以下のWebアプリケーションを、Strutsを用いて作成しなさい。
- HTTPヘッダーの名前と値の一覧を表示する事。
- headerタグを使用する事。
(実習課題4)
以下のWebアプリケーションを、Strutsを用いて作成しなさい。
- 特定のHTTPリクエストパラメータを表示する事。
- そのパラメータには複数の値が存在するようにする事。
- parameterタグを使用する事。