JSP Expression Language (EL) を使用すると、JavaBeans に格納されたデータへのアクセスが非常に簡単になります。 JSP EL は、算術式と論理式の両方を作成するために使用できます。 JSP EL 式では、整数、浮動小数点数、文字列、定数 true、false、および null を使用できます。
通常、JSP タグで属性値を指定する必要がある場合は、単純に文字列を使用します。
<jsp:setProperty name="box" property="perimeter" value="100"/>
JSP EL を使用すると、プロパティ値を表す式を指定できます。簡単な式の構文は次のとおりです。
${expr}その中で、
式は式を指します。 JSP EL の一般的な演算子は次のとおりです。
「。」そして
「[]」。これら 2 つの演算子を使用すると、さまざまな機能にアクセスできます。
JavaBeansプロパティ。
たとえば、上記の
<jsp:setProperty>タグは、次のように式言語を使用して書き換えることができます。
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>JSP コンパイラが「
${} 「書式設定後、式を評価し、式の値の代替値を生成するコードが生成されます。ラベルのテンプレート テキストで式言語を使用することもできます。例えば
<jsp:テキスト>タグは、本文のテキストを JSP 出力に挿入するだけです。
<jsp:text><h1>JSP さん、こんにちは!</h1></jsp:text>
今、で
<jsp:テキスト>次のように、タグの本文で式を使用します。
<jsp:text>ボックスの周囲長は ${2*box.width + 2*box.height}</jsp:text>かっこを使用して、EL 式の部分式を整理できます。例えば
${(1 + 2) * 3} 9に等しいが、 ${1 + (2 * 3)} 7に等しい。EL 式の評価を無効にするには、次を使用します。
ページ指示は
無視されます属性値は次のように設定されます
真実:
<%@ ページ isELIgnored ="true|false" %>
この方法では、EL 式は無視されます。に設定されている場合
間違いの場合、コンテナは EL 式を評価します。
EL 式は、Java が提供するほとんどの算術演算子および論理演算子をサポートします。
| オペレーター | 説明する |
|---|---|
| 。 | 訪問してください豆属性またはマップエントリ |
| [] | 配列またはリンクされたリストの要素にアクセスする |
| ( ) | 部分式を整理して優先順位を変更する |
| + | 追加 |
| - | マイナスかマイナスか |
| * | 取る |
| / または div | 取り除く |
| % または mod | 型を取る |
| == または等式 | 平等性をテストする |
| != またはね | 不等かどうかをテストする |
| < または lt | 未満かどうかをテストする |
| > またはGT | より大きいかどうかをテストする |
| <= またはル | 以下かどうかをテストします |
| >= オージ | 以上かどうかをテストします |
| && または そして | 論理積をテストする |
| || または | 論理和をテストする |
| ! か否か | テストの否定 |
| 空の | null 値をテストする |
JSP EL を使用すると、式で関数を使用できます。これらの関数はカスタム タグ ライブラリで定義する必要があります。関数を使用するための構文は次のとおりです。
${ns:func(param1, param2, ...)}ns は名前空間を指します。
機能関数の名前を指します。
パラメータ1最初のパラメータを参照します。
パラメータ2は 2 番目のパラメータを指します。以下同様です。たとえば、次のような関数があります
fn: 長さJSTL ライブラリで定義されている を使用して、次のように文字列の長さを取得できます。
${fn:length("長さを取得")}タグ ライブラリの関数を使用するには、これらのライブラリをサーバーにインストールしてから、
<タグリブ>タグには、JSP ファイル内のこれらのライブラリが含まれます。
JSP EL は、次の表にリストされている暗黙的オブジェクトをサポートします。
| 隠しオブジェクト | 説明する |
|---|---|
| ページスコープ | ページスコープ |
| リクエストスコープ | リクエストスコープ |
| セッションスコープ | セッションスコープ |
| 適用範囲 | 適用範囲 |
| パラメータ | リクエストオブジェクトのパラメータ、文字列 |
| パラメータ値 | Requestオブジェクトのパラメータ、文字列コレクション |
| ヘッダ | HTTPヘッダー、文字列 |
| ヘッダー値 | HTTPヘッダー、文字列コレクション |
| initParam | コンテキスト初期化パラメータ |
| クッキー | クッキーの値 |
| ページコンテキスト | page現在のページのコンテキスト |
これらのオブジェクトは、変数と同様に式で使用できます。次に、この概念をよりよく理解するためにいくつかの例を示します。
ページコンテキストオブジェクトはJSP内にあります
ページコンテキストオブジェクト参照。合格
ページコンテキストアクセスできるオブジェクト
リクエスト物体。たとえば、次のサイトを参照してください。
リクエストオブジェクトによって渡されるクエリ文字列は次のようになります。
${pageContext.request.queryString}
ページスコープ、、
リクエストスコープ、、
セッションスコープ、、
適用範囲変数は、さまざまなスコープ レベルで保存されている変数にアクセスするために使用されます。
たとえば、明示的にアクセスする必要がある場合、
適用範囲レイヤード
箱変数には次のようにアクセスできます。
applicationScope.box。
パラメータそして
パラメータ値パラメータ値にアクセスするために使用されるオブジェクト。
request.getParameter方法と
request.getParameterValues方法。
たとえば、という名前のファイルにアクセスすると、
注文パラメータでは、次のような式を使用できます。
${param.order} 、 または${param["オーダー"]} 。次の例は、次のリクエストにアクセスする方法を示しています。
ユーザー名パラメータ:
<%@ page import="java.io.*,java.util.*" %><% String title = "リクエストパラメータへのアクセス" %><html><head><title><% out.print(title); ); %></title></head><body><center><h1><% out.print(title); align="center"><p>${param["username"]}</p></div></body></html>param オブジェクトは単一の文字列を返しますが、
パラメータ値オブジェクトは文字列の配列を返します。
ヘッダそして
ヘッダー値オブジェクトは、情報ヘッダーにアクセスするために使用されます。
request.getHeader方法と
request.getHeaders方法。
たとえば、次の名前のファイルにアクセスするには、
ユーザーエージェント情報ヘッダーでは、次のような式を使用できます。
${header.user-agent} 、 または${header["ユーザーエージェント"]} 。次の例は、アクセス方法を示しています。
ユーザーエージェント情報ヘッダー:
<%@ page import="java.io.*,java.util.*" %><% String title = "ユーザー エージェントの例"; %><html><head><title><% out.print(title) ); %></title></head><body><center><h1><% out.print(title); align="center"><p>${header["user-agent"]}</p></div></body></html>実行結果は次のとおりです。

header オブジェクトは単一の値を返しますが、headerValues は文字列の配列を返します。