検索

キーワード


目次

【Java】JSPのEL式

  • 公開日:2020-10-21 16:32:14
  • 最終更新日:2020-11-13 21:55:49
【Java】JSPのEL式

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。エンジニアの新田です!

ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。

今回は、JSPのEL式について紹介します。

Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!

関連記事:【Java】JSPの基本的な構文 【Java】JSPの暗黙オブジェクト


EL式とは?

Expression Languageの略で、JSPをより簡単に書くためにJSP2.0で導入されました。

JSPの式よりも簡単にスコープ内に格納されたオブジェクトが保持するデータを出力することができます。

EL式を利用することでJSPファイルをスクリプトレスにしやすくなり、可読性が高くなります。


EL式では「${ 式 }」と書くことで値を出力することができます。

${ 10 + 20 }
${ data }
${ obj.name }



演算結果を出力する

演算子を使った演算結果を出力することができます。

${ (1 + 2) * 3 }
${ 100 == 100 ? "はい" : "いいえ" }
${ empty x }


EL式では以下の演算子が使用できます。

EL式の演算子

※emptyはEL式独自の演算式で、指定したスコープオブジェクトやプロパティが存在しない、または値がnullや空文字の場合にtrueとなる。



暗黙オブジェクトを使って出力する

EL式の暗黙オブジェクトを使って値を出力することができます。

${requestScope.name}
${sessionScope.name}
${param.name}


EL式では以下の暗黙オブジェクトが使用できます。

EL式の暗黙オブジェクト



スコープに格納されているオブジェクトを参照(出力)する

スコープに保存されているオブジェクトを参照することができます。

EL式はpage→request→session→applicationの順に指定されたオブジェクトを検索し、最初に見つかった オブジェクトを参照します。


【Servlet

// リクエストに値を保存
request.setAttribute("age", "25");

// jspページにディスパッチ
RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/elSample1.jsp");
dispatcher.forward(request, response);


【JSP

<html>
    <head></head>
    <body>
        // EL式で書いた場合<br/>
        年齢は、${age}です。
        <br/><br/>
        // JSPの式で書いた場合<br/>
        年齢は、<%= request.getAttribute("age") %>です。
    </body>
</html>

JSPの式よりも簡潔に記述する事ができるため、コードがシンプルになり可読性が良くなります。


【出力結果

EL式実行結果1

「EL式」、「JSPの式」のどちらで書いても出力結果は同じです。



スコープに格納されているオブジェクトのフィールドを参照(出力)する

スコープに保存されているオブジェクトのフィールドを参照することができます。

ただし、オブジェクトのフィールドを直接参照するのではなく、getterメソッド経由で参照しますので、対象フィールドのgetterメソッドが用意されている必要があります。

オブジェクトのフィールドを参照する場合のEL式は、「.」演算子を使用して記述します。

${オブジェクト名.フィールド名}


【Servlet

// オブジェクトを生成して値を設定
Employee emp = new Employee();
emp.setName("佐藤");
emp.setAge("25");

// リクエストにオブジェクトを保存
request.setAttribute("emp", emp);

// jspページにディスパッチ
RequestDispatcher dispatcher = request.getRequestDispatcher("jsp/elSample2.jsp");
dispatcher.forward(request, response);



【JSP

<html>
    <head></head>
    <body>
        <!-- EL式で書いた場合 -->
        ${emp.name}さんは、${emp.age}歳です。
        <br/><br/>
        <!-- JSPの式で書いた場合 -->
        <%= ((Employee)request.getAttribute("emp")).getName() %>さんは、<%= ((Employee)request.getAttribute("emp")).getName() %>歳です。
    </body>
</html>

JSPの式よりも簡潔に記述する事ができるため、コードがシンプルになり可読性が良くなります。


【出力結果

EL式実行結果2

「EL式」、「JSPの式」のどちらで書いても出力結果は同じです。



オブジェクトがList(配列)やMapだった場合の参照方法

スコープに保存されているオブジェクトがList(配列)やMapの場合は以下のように記述する事で参照できます。

List、配列

${オブジェクト名[インデックス]}

Map(以下の何れか)

${オブジェクト名["キー名"]}
${オブジェクト名.キー名}






関連記事:【Java】JSPの基本的な構文 【Java】JSPの暗黙オブジェクト




【著者】

新田

JavaメインのWebアプリケーション開発に多く携わっています。
Javaの基本的な部分の紹介や、これまで経験したシステム開発手法、新しい技術についても紹介していこうと思います。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様