Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Taglibs −3.Standard Taglibs:式言語
更新日:2006/8/15
Taglibs−3.Standard Taglibs:式言語
ここでは、Standard Taglibsで定義されている式言語(Express Language)について解説します。JSP2.0からはStandard Taglibsだけでなく、JSPでも式言語が利用できるようになっています。

実行環境
・WindowsXP Home Edition
・J2SDK 1.4.2_04
・Tomcat 5.0.18
・Standard Taglib 1.1.0
基本

式言語(Express Language)は、JSPの特徴であるデザイナとプログラマの分業を進めるために導入されたJavaコードを簡易に表現する方法です。式言語を使用することで、より簡潔にHTMLファイルの中にプログラムを記述することができるようになります。

${ }
式言語では${ }で変数を参照します。${abc}と記述すると変数abcの値を参照していることを表します。<c:out value="${abc}"/>と記述すると変数abcの値を出力することを表しています。リテラル(文字列など)と共に利用することもできます。<c:out value="Hello ${guest}"/>と記述するとHelloの後に変数guestの値を続けて出力します。



オブジェクトのプロパティを参照する際に.(ドット)を使用します。${user.name}はuserオブジェクトのnameプロパティを参照することを表します。nameプロパティにはJavaBeansのgetterメソッドなどを定義しておく必要があります。プロパティ自身がオブジェクトである場合は.を続けて記述することができます。${contry.goods.price}はcountryオブジェクトのプロパティであるgoodsオブジェクトのpriceプロパティを参照することを表しています。


[ ]
配列やコレクションオブジェクト(List、Mapなど)の各要素を参照する際に[ ]を使用します。${array1[2]}は配列array1の3番目の要素を参照することを表しています。${map1["color"]}はMapオブジェクトmap1のcolorキーに対応する値を参照することを表しています。各要素のオブジェクトがプロパティを持っている場合は[ ]、.を組み合わせて使用することもできます。${table[0].price}は配列tableの1番目の要素のpriceプロパティを参照していることを表しています。

param、paramValues
param、paramValuesは式言語で用意されている暗黙的オブジェクトです。<FORM>タグなどにより送信される、HTTPのリクエストパラメータを取得する際に使用します。


param
<INPUT TYPE="text">、<INPUT TYPE="radio">などパラメータ名とパラメータ値が1対1のリクエストパラメータを取得する際に使用します。${param.tel}はパラメータ名がtelのパラメータ値を取得することを表しています。


paramValues
<INPUT TYPE="checkbox">などパラメータ名とパラメータ値が1対多のリクエストパラメータを取得する際に使用します。${paramValues.family}はパラメータ名がfamilyのパラメータ値すべてをString型の配列で取得することを表しています。${paramValues.family[0]}はパラメータ名がfamilyのパラメータ値の配列1番目の要素を取得することを表しています。

pageScope、requestScope、sessionScope、applicationScope
pageScope、requestScope、sessionScope、applicationScopeは式言語で用意されている暗黙的オブジェクトです。page、request、session、applicationのそれぞれのスコープをもつオブジェクト変数の値を取得する際に使用します。


pageScope
pageスコープは該当するページでのみ有効な値のスコープです。そのページのみで参照する値に使用します。${pageScope.user}はpageスコープをもつuserオブジェクトの値を参照することを表しています。


requestScope
requestスコープはHTMLの<FORM>タグなどのようにページ間でデータをやり取りする際に、その転送元と転送先のページで有効な値のスコープです。ページ間で値を共有する場合に使用します。${requestScope.name}はrequestスコープをもつnameオブジェクトの値を参照することを表しています。


sessionScope
sessionスコープはブラウザを閉じる、もしくは一定時間経過するまで保持される値のスコープです。ID、Passなどブラウザを閉じるまで値を保持したい場合に使用します。${sessionScope.id}はsessionスコープをもつidオブジェクトの値を参照することを表しています。


applicationScope
applicationスコープはJSPコンテナが停止、再起動するまで保持される値のスコープです。アプリケーション内で共通に使用したい値に使用します。${applicationScope.configA}はapplicationスコープをもつconfigAオブジェクトの値を参照することを表しています。

pageContext

pageContext
pageContextは式言語で用意されている暗黙的オブジェクトで、JSPの暗黙的オブジェクトと唯一同じオブジェクトです。pageContextはすべてのスコープの変数、すべてのJSPの暗黙的オブジェクトを管理しています。そのため、すべてのスコープの変数、すべてのJSP暗黙的オブジェクトを参照することができます。${pageContext.request.remoteHost}はJSPの暗黙的オブジェクトrequestを介して、remoteHostの値を取得しています。

header、headerValues、cookie
header、headerValues、cookieは式言語で用意されている暗黙的オブジェクトです。


header
指定したヘッダー名に対するヘッダー値をString型オブジェクトで取得する際に使用します。${header.host}はヘッダー情報のhostの値を取得することを表しています。


headerValues
指定したヘッダー名に対するヘッダー値が複数ある場合、すべての値をString型の配列で取得する際に使用します。


cookie
指定したcookie名に対するCookieオブジェクトを取得する際に使用します。${cookie["profile"].name}はCookieオブジェクトprofileのnameプロパティの値を取得することを表しています。

initParam

initParam
initParamは式言語で用意されている暗黙的オブジェクトです。web.xmlに指定されている初期化パラメータの値を取得する際に使用します。

演算子

式言語でも加算、減算、比較などに使用する演算子が用意されています。

【算術演算子】

演算子
内容
+
数値を加算する。
${3 + 5}
-
数値を減算する。
${10 - 5}
*
数値を乗算する。
${6 * 8}
/、div
数値を除算する。XMLタグとの混同を避けるため、別名divも使用できる。
${10 / 5}
${10 div 5}
%、mod
数値を除算した際の余りを出力する。XMLタグとの混同を避けるため、別名modも使用できる。
${10 / 5}
${10 div 5}

【比較演算子】

演算子
内容
==、eq
両辺が等しい場合trueを返す。
${num1 == 5}
${num1 eq 5}
!=、ne
両辺が異なる場合trueを返す。
${'ab' != 'ab'}
${'ab' ne 'ab'}
<、lt
右辺が大きい場合trueを返す。
${6 < 8}
${6 lt 8}
>、gt
右辺が小さい場合trueを返す。
${2.5 > 5.5}
${2.5 gt 5.5}
<=、le
右辺が大きいか、等しい場合にtrueを返す。
${(3+5) <= 10}
${(3+5) le 10}
>=、ge
右辺が小さいか、等しい場合にtrueを返す。
${10.0 >= 20} ${10.0 ge 20}

【条件演算子】

演算子
内容
&&、and
両辺の値がいずれもtrueである場合に、trueを返す。
${(3 == 3) && (5 != 6)}
||、or
両辺の値のいずれかがtrueである場合に、trueを返す。
${(10 <= 3) || (5 < 6)}
!、not
比較する値がfalseの場合に、trueを返す。
${!(10 == 100)}

【その他の演算子】

演算子
内容
empty
比較する値がnullか空の場合に、trueを返す。
${empty(abc)}
A ? B : C
Aがtrueの場合にBを実行する。Aがfalseの場合にCを実行する。
${(10 >= 2) ? 5 : 10}



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道