Jsp-expression-language
JSP-式言語(EL)
JSP Expression Language(EL)を使用すると、JavaBeansコンポーネントに格納されているアプリケーションデータに簡単にアクセスできます。 JSP ELを使用すると、(a)*算術式と(b)*論理式の両方を作成できます。 JSP EL式内では、*整数、浮動小数点数、文字列、ブール値の組み込み定数trueおよびfalse *、およびnullを使用できます。
簡単な構文
通常、JSPタグで属性値を指定するときは、単に文字列を使用します。 たとえば-
JSP ELを使用すると、これらの属性値のいずれかに式を指定できます。 JSP ELの簡単な構文は次のとおりです-
ここで、 expr は式自体を指定します。 JSP ELで最も一般的な演算子は*。および *[] です。 これらの2つの演算子を使用すると、Java Beanおよび組み込みJSPオブジェクトのさまざまな属性にアクセスできます。
たとえば、上記の構文 <jsp:setProperty> タグは、次のような式で記述できます-
JSPコンパイラは、属性に $ \ {} フォームを見つけると、コードを生成して式を評価し、expressonの値を置き換えます。
タグのテンプレートテキスト内でJSP EL式を使用することもできます。 たとえば、 <jsp:text> タグは、JSPの本文内にコンテンツを挿入するだけです。 次の <jsp:text> 宣言は <h1> Hello JSP!</h1> をJSP出力に挿入します-
属性に使用する同じ $ \ {} 構文を使用して、JSP EL式を <jsp:text> タグ(またはその他のタグ)の本文に含めることができるようになりました。 たとえば-
EL式では、括弧を使用して部分式をグループ化できます。 たとえば、* $ \ {(1 + 2) 3}は9ですが、$ \ {1 +(2 3)}は7 *です。
EL式の評価を無効にするには、以下のようにページディレクティブの isELIgnored 属性を指定します-
この属性の有効な値はtrueおよびfalseです。 trueの場合、静的テキストまたはタグ属性に表示されるEL式は無視されます。 falseの場合、EL式はコンテナによって評価されます。
ELの基本的な演算子
JSP Expression Language(EL)は、Javaでサポートされているほとんどの算術演算子と論理演算子をサポートしています。 次の表は、最も頻繁に使用される演算子を示しています-
S.No. | Operator & Description |
---|---|
1 |
. Beanプロパティまたはマップエントリにアクセスする |
2 |
[] 配列またはリスト要素にアクセスする |
3 |
( ) 部分式をグループ化して評価順序を変更する |
4 |
+ 添加 |
5 |
- 値の減算または否定 |
6 | 乗算 |
7 |
/or div 分割 |
8 |
% or mod モジュロ(剰余) |
9 |
== or eq 平等のテスト |
10 |
!= or ne 不平等のテスト |
11 |
< or lt 未満のテスト |
12 |
> or gt より大きいかどうかをテストする |
13 |
⇐ or le 以下のテスト |
14 |
>= or ge 以上のテスト |
15 |
&& or and 論理ANDのテスト |
16 | * |
or or* 論理ORのテスト | |
17 |
! or not 単項ブール補数 |
18 |
empty 空の変数値をテストする |
JSP ELの関数
JSP ELでは、式で関数を使用することもできます。 これらの関数は、カスタムタグライブラリで定義する必要があります。 関数の使用法には次の構文があります-
ここで、 ns は関数の名前空間、 func は関数の名前、 param1 は最初のパラメーター値です。 たとえば、JSTLライブラリの一部である関数 fn:length 。 この関数を次のように使用して、文字列の長さを取得できます。
タグライブラリ(標準またはカスタム)の関数を使用するには、サーバーにそのライブラリをインストールし、JSTLの章で説明されているように <taglib> ディレクティブを使用してJSPにライブラリを含める必要があります。
JSP EL暗黙オブジェクト
JSP式言語は、次の暗黙的なオブジェクトをサポートしています-
S.No | Implicit object & Description |
---|---|
1 |
pageScope ページスコープからのスコープ変数 |
2 |
requestScope 要求スコープのスコープ変数 |
3 |
sessionScope セッションスコープのスコープ変数 |
4 |
applicationScope アプリケーションスコープのスコープ変数 |
5 |
param 文字列としてのリクエストパラメータ |
6 |
paramValues 文字列のコレクションとしてのリクエストパラメータ |
7 |
header 文字列としてのHTTP要求ヘッダー |
8 |
headerValues 文字列のコレクションとしてのHTTP要求ヘッダー |
9 |
initParam コンテキスト初期化パラメーター |
10 |
cookie クッキー値 |
11 |
pageContext 現在のページのJSP PageContextオブジェクト |
これらのオブジェクトは、変数のように式で使用できます。 以下の例は、概念を理解するのに役立ちます-
pageContextオブジェクト
pageContextオブジェクトを使用すると、pageContext JSPオブジェクトにアクセスできます。 pageContextオブジェクトを使用して、リクエストオブジェクトにアクセスできます。 たとえば、要求の着信クエリ文字列にアクセスするには、次の式を使用できます-
スコープオブジェクト
たとえば、アプリケーションスコープのボックス変数に明示的にアクセスする必要がある場合は、applicationScope変数から applicationScope.box としてアクセスできます。
paramおよびparamValuesオブジェクト
paramおよびparamValuesオブジェクトを使用すると、 request.getParameter および request.getParameterValues メソッドを介して通常使用可能なパラメーター値にアクセスできます。
たとえば、orderという名前のパラメーターにアクセスするには、式 $ \ {param.order} または $ \ {param ["order"]} を使用します。
以下は、usernameという名前のリクエストパラメータにアクセスする例です-
paramValuesオブジェクトは文字列配列を返すのに対し、paramオブジェクトは単一の文字列値を返します。
headerおよびheaderValuesオブジェクト
headerおよびheaderValuesオブジェクトは、通常 request.getHeader および request.getHeaders メソッドを介して利用可能なヘッダー値へのアクセスを提供します。
たとえば、user-agentという名前のヘッダーにアクセスするには、式 $ \ {header.user-agent} または $ \ {header ["user-agent"]} を使用します。
以下は、user-agentという名前のヘッダーパラメータにアクセスする例です-
出力は次のようになります-
headerValuesオブジェクトは文字列配列を返すのに対し、headerオブジェクトは単一の文字列値を返します。