JSPの式言語
JSPの式言語(EL)のJavaBeanに格納されたアクセスデータは、非常に簡単になるように。 JSP ELのいずれかの演算式を作成するために使用することができ、論理式を作成するために使用することができます。 JSPのEL式は、整数、浮動小数点数、文字列、真の定数、偽を使用することができますでは、ヌルがあります。
単純な構文
通常は、JSPタグは、単に文字列を使用するときに、プロパティの値を指定する必要がある場合に:
<jsp:setProperty name="box" property="perimeter" value="100"/>
JSPのEL式には、プロパティ値を指定することができます。 次のように単純な式の構文は次のとおりです。
${expr}
ここで、exprは式を指します。 JSP EL汎用の演算子では "[]" "。"で、 これら2つの演算子を使用すると、オブジェクトを介して埋め込まれたJSP JavaBeanプロパティの多種多様にアクセスすることができます。
例えば、上記の<jsp:setPropertyを>タグは次のように表現言語を使用して書き換えることができます。
<jsp:setProperty name="box" property="perimeter" value="${2*box.width+2*box.height}"/>
JSPコンパイラはフォーマット後に「$ {}を」を参照してくださいする場合は、式を評価するためのコードを生成し、プロパティに式の値を置き換えるための代替を生成します。
また、テンプレートテキスト]タブで式言語を使用することができます。 たとえば、のは、<jsp:text>タグには、単に本文テキストJSP出力に挿入すること。
<jsp:text> <h1>Hello JSP!</h1> </jsp:text>
今、中:このように、体内での発現の<jspテキスト>タグを使用して:
<jsp:text> Box Perimeter is: ${2*box.width + 2*box.height} </jsp:text>
括弧内のEL式は部分式を整理するために使用することができます。 たとえば、$ {(1 + 2)* 3は9に等しい}が、$ {1 +(2 * 3)} = 7。
EL式の評価を無効にしたい、あなたはtrueにpageディレクティブisELIgnored属性を使用する必要があります。
<%@ page isELIgnored ="true|false" %>
このように、EL式は無視されます。 falseに設定すると、コンテナはEL式を計算されます。
EL根底にあるオペレータ
ほとんどのJavaの算術演算子と論理演算子によって提供されるEL式のサポート:
演算子 | 説明 |
---|---|
。 | Beanは、プロパティまたはマッピングエントリにアクセス |
[] | 要素の配列またはリストにアクセス |
() | 優先順位を変更するために部分式を整理します |
+ | プラス |
- | 保存または負 |
* | 乗算 |
/またはDIV | 除きます |
%またはMOD | 法として |
==またはEQ | 平等のためのテスト |
!=またはNE | かどうかテスト不等 |
<またはLT | かどうかテスト少ないです |
>またはGT | 試験は、より大きい |
<=またはル | かどうかテスト以下 |
> =又はGe | かどうかテスト以上 |
&&またはと | テストロジックと |
||またはまたは | テストロジックまたは |
!またはNOT | テスト否定 |
空の | テストするかどうかはnull |
JSP EL機能
JSP EL機能については、式の中で使用することができます。 これらの機能は、カスタムタグライブラリで定義する必要があります。 構文は次のとおりである関数を使用します。
${ns:func(param1, param2, ...)}
NSは、funcは関数の名前で、パラメータ1は、最初の引数を指し、PARAM2は2番めの引数を参照し、ネームスペース(名前空間)のことをいいます。 例えば、関数fnがあります:JSTLライブラリで定義された長さは、文字列の長さを取得するには、このようにすることができます:
${fn:length("Get my length")}
タグライブラリの関数を使用するには、サーバーにインストールされているこれらのライブラリを必要として、<のtaglib>タグは、JSPファイル内のライブラリが含まれて使用されます。
JSPのEL暗黙的オブジェクト
JSPのEL暗黙的オブジェクトは、次の表に記載されているサポートされています。
隠されたオブジェクト | 説明 |
---|---|
PAGESCOPE | スコープページ |
requestScope | リクエストスコープ |
sessionScopeと | セッションスコープ |
applicationScopeを | アプリケーションスコープ |
PARAM | Requestオブジェクトのパラメータ文字列 |
paramValues | パラメータRequestオブジェクト、文字列のコレクション |
ヘッダ | HTTPヘッダー文字列 |
headerValues | HTTPヘッダー、文字列のコレクション |
initParam | コンテキストの初期化パラメータ |
クッキー | Cookie値 |
pageContextの | 現在のpageContextページ |
あなたは、同じ変数を使用してのように、式の中でこれらのオブジェクトを使用することができます。 次は、より良い、この概念を理解するためにいくつかの例を与えるだろう。
pageContextのオブジェクト
pageContextオブジェクトは、JSP pageContextオブジェクトへの参照です。 pageContextオブジェクトによって、あなたはリクエストオブジェクトにアクセスすることができます。 たとえば、次のように、クエリ文字列で渡されたリクエストオブジェクトにアクセスします。
${pageContext.request.queryString}
スコープオブジェクト
PAGESCOPE、requestScope、sessionScopeとは、applicationScopeを変数は、各変数のスコープレベルに格納されたデータにアクセスするために使用されます。
あなたが明示的にボックスapplicationScopeを可変層にアクセスする必要がある場合たとえば、それがアクセスすることができます:applicationScope.boxを。
paramとparamValuesオブジェクト
PARAMとparamValuesオブジェクトメソッドとrequest.getParameterValues request.getParameterメソッドを使用してパラメータ値にアクセスするために使用されます。
例えば、順パラメータへのアクセスは、あなたがこの表現を使用することができます:$ {param.order}、または$ {のparam [ "オーダー"]}。
次の例では、ユーザ名のリクエストパラメータにアクセスする方法を示しています。
<%@ page import="java.io.*,java.util.*" %> <% String title = "Accessing Request Param"; %> <html> <head> <title><% out.print(title); %></title> </head> <body> <center> <h1><% out.print(title); %></h1> </center> <div align="center"> <p>${param["username"]}</p> </div> </body> </html>
objectパラメータは、paramValuesオブジェクトが文字列配列を返され、単一の文字列を返します。
ヘッダオブジェクトとheaderValues
ヘッダとheaderValuesオブジェクトは、メソッドとrequest.getHeaders request.getHeader法を用いて、ヘッダ情報にアクセスするために使用されます。
$ {header.user剤}、または$ {ヘッダ[ "ユーザーエージェント"]}:例えば、情報にアクセスするには、この式を使用することができ、User-Agentヘッダと呼ばれます。
次の例では、User-Agentヘッダにアクセスする方法を示しています。
<%@ page import="java.io.*,java.util.*" %> <% String title = "User Agent Example"; %> <html> <head> <title><% out.print(title); %></title> </head> <body> <center> <h1><% out.print(title); %></h1> </center> <div align="center"> <p>${header["user-agent"]}</p> </div> </body> </html>
結果は以下のとおりであります:
headerValuesは、文字列の配列を返しながら、ヘッダーオブジェクトは、単一の値を返します。