EL式の基本構文まとめ!${}で使う書き方のルールを解説
生徒
「先生、JSPでEL式っていう${}の記述が出てきたんですが、どうやって使えばいいんですか?」
先生
「良い質問です。EL式は、JSPで変数の値を表示したり、条件を判定したりする便利な構文なんです。」
生徒
「Javaのコードを<% %>で書くよりも簡単に見えますね?」
先生
「そうですね。EL式はとてもシンプルな構文なので、初心者にもおすすめです。それでは基本的な書き方を一緒に見ていきましょう!」
1. EL式の基本構文とは?
EL式(Expression Language)は、JSPで変数の値を参照したり、条件を判定するための記法です。EL式は${}という構文で書き、Javaコードを使わずに値を表示できるのが特徴です。
基本構文は以下のとおりです。
<p>こんにちは、${userName} さん!</p>
この場合、userNameという変数がJSPのスコープに存在すれば、その値が画面に表示されます。
2. EL式で参照できるスコープの順序
EL式で変数を参照するとき、JSPは以下のスコープの順番で変数を探します。
- pageスコープ
- requestスコープ
- sessionスコープ
- applicationスコープ
つまり、同じ名前の変数が複数のスコープに存在するときは、最も狭いスコープの変数が優先されるということです。
3. スコープを明示して変数を参照する
変数名が重複していたり、明確にスコープを指定したい場合は、以下のように書くことができます。
${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}
このように書くことで、どのスコープにある変数なのかを明示的に指定できます。
4. JavaBeansのプロパティアクセス
EL式では、オブジェクトのプロパティに簡単にアクセスすることができます。たとえば、Userというオブジェクトにnameというプロパティがある場合、次のように記述します。
${user.name}
このとき、内部的にはgetName()メソッドが呼び出されます。セッターやゲッターが正しく実装されている必要があります。
5. 配列やリストの要素を取り出す構文
配列やリストの要素にアクセスする場合、インデックス番号を使って参照することができます。
${fruits[0]}
このように書けば、配列fruitsの0番目の要素が表示されます。リストにも同じ構文が使えます。
6. Mapの値をEL式で取得する方法
EL式では、Mapの値にも簡単にアクセスできます。以下は、userMapというMapからemailの値を取得する例です。
${userMap["email"]}
文字列キーを使って、目的の値を取り出すことができます。シングルクォート'email'でも動作します。
7. nullや空値の判定に使えるempty演算子
EL式では、変数がnullまたは空であるかを判定するemptyという演算子があります。以下のように使います。
${empty userName}
この式は、userNameがnullまたは空文字列の場合にtrueを返します。
8. 条件判定に使える比較演算子
EL式では以下のような比較演算子を使って、条件判定を行うことができます。
==:等しい!=:等しくない>:より大きい<:より小さい>=:以上<=:以下
たとえば、スコアが60以上かを判定するには以下のように書きます。
<c:if test="${score >= 60}">
合格です
</c:if>
9. 論理演算子の使い方(and / or)
複数条件を組み合わせる場合には、論理演算子を使います。
&&(またはand)||(またはor)
次のように記述できます。
<c:if test="${age >= 18 && isMember}">
入場できます
</c:if>
EL式では、andやorという英語表記も使用可能です。
10. EL式で数値や文字列を結合する方法
EL式では+演算子を使って文字列や数値を結合することができます。
${"合計:" + total + "円"}
数値同士で+を使うと加算され、文字列が含まれると連結になります。型によって動作が異なるため注意が必要です。
まとめ
EL式の基本構文を振り返る
ここまで、JSPにおけるEL式の基本構文について詳しく見てきました。EL式は${}というシンプルな記法で、JSP内の値参照や条件判定を直感的に記述できる点が大きな特徴です。従来のスクリプトレットと比べると、Javaコードを直接書かずに画面表示を制御できるため、可読性が高く、保守性にも優れています。JSP初心者にとっても理解しやすく、Webアプリケーション開発の最初の一歩として非常に重要な要素です。
スコープと変数参照の重要性
EL式では、page、request、session、applicationという複数のスコープを意識することが欠かせません。スコープの検索順序を理解しておくことで、意図しない値が表示されるトラブルを防ぐことができます。また、pageScopeやrequestScopeなどを使ってスコープを明示的に指定すれば、複雑なJSP画面でも安全にデータを扱えます。JSPとサーブレットを連携させる際にも、このスコープの考え方は頻繁に登場します。
JavaBeansやコレクション操作
EL式はJavaBeansのプロパティアクセスにも強く、${user.name}のように自然な書き方でゲッターを呼び出せます。さらに、配列やリスト、Mapといったコレクションの要素取得も簡単に行えるため、実務レベルのWebアプリケーションでも十分に活用できます。これにより、JSP側のロジックがシンプルになり、HTMLに近い感覚で画面設計が可能になります。
条件判定と演算子の活用
empty演算子を使ったnullチェックや、比較演算子・論理演算子を組み合わせた条件判定は、EL式を使いこなすうえで欠かせません。特に入力チェックや表示制御の場面では、EL式とJSTLのc:ifタグを組み合わせることで、Javaコードを書かずに柔軟な条件分岐が実現できます。EL式は単なる値表示だけでなく、ロジック表現にも十分対応できることを理解しておくと、JSP開発の幅が広がります。
サンプルプログラムで理解を深める
<p>ようこそ、${user.name} さん</p>
<c:if test="${empty user.email}">
<p>メールアドレスが未登録です</p>
</c:if>
<c:if test="${score >= 60}">
<p>試験結果:合格</p>
</c:if>
上記のように、EL式を使うことで画面表示と条件判定を簡潔に記述できます。HTML構造を保ったままロジックを組み込める点は、JSPならではの強みと言えるでしょう。
生徒
「EL式って、最初はただの表示用だと思っていましたが、条件判定やコレクション操作までできるんですね。」
先生
「その通りです。EL式を理解すると、JSPの書き方が一気に整理されますよ。」
生徒
「スコープの順序も大事だと分かりました。意識せずに使うと、思わぬ値が出そうですね。」
先生
「良いところに気づきました。EL式は便利ですが、仕組みを理解して使うことが大切です。」
生徒
「これからJSPを書くときは、できるだけEL式とJSTLでシンプルに書いてみます!」
先生
「その姿勢が大事です。基礎をしっかり身につければ、実務でも必ず役立ちますよ。」