プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Java
  • 【JSP】EL式について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【JSP】EL式について

04.21

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

EL式は、簡潔な表現でオブジェクトにアクセスができる言語です。

具体的な使い方について解説してきます。

基本的なEL式の構文

基本的には、「${~}」という構文を使います。

文字列を出力する場合

${"HelloWorld"}

ダブルコーテーションで囲うか、シングルコーテーションで囲います。

数字を出力する場合

${123}

数字の場合は、コーテーションで囲う必要がありません。

スクリプトレットで同じことをしようとした場合

スクリプトレットで同じことをしようとした場合は、それぞれ下記のようになりますので、記述がだいぶ簡潔になっていることがわかります。

<% out.print("HelloWorld"); %>
<% out.print(123); %>

オブジェクト(スコープ変数)へのアクセス

スクリプトレットで、リクエストスコープに格納した値にアクセスする場合は、下記のように記述しました。

<% out.print(request.getAttribute("name")); %>

EL式では、下記のようになります。

${name}

検索される変数のスコープの仕様について

なお、スコープにも色々と種類があったかと思いますが、下記のように狭い方から順番に検索されます。

ページ→リクエスト→セッション→アプリケーション
スコープについてイマイチぴんと来ない方は、下記の記事でも解説していますので、ご参照下さい。

【サーブレット】スコープについて

nullについて

 では、もし変数の中に値が入っていなかった場合はどのような挙動になるのでしょうか?
スクリプトレットでは、nullが帰ってきて表示されてしまいますが、EL式では何も表示されない挙動となります。

 JavaBeansへのアクセス

例えば、下記のようにスクリプトレットで、JavaBeansのプロパティへアクセスしようとしているソースがあった場合は、下記のようにごちゃごちゃなソースコードになってしまいます。

1
<strong>bean.jsp</strong>

<%@page contentType="text/html; charset=UTF-8" %>
<%@page import="bean.*" %>

<HTML>
<HEAD>
<TITLE>BeanTest</TITLE>
</HEAD>
<BODY>

<% TestBean bean = new TestBean(); bean.setName("太郎"); request.setAttribute("bean",bean); %>

名前は、<% out.print(((TestBean)request.getAttribute("bean")).getName()); %>です。

</BODY>
</HTML>

TestBean.java(JavaBeans)

package bean;

public class TestBean {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}

EL式に直すと、下記のように非常に簡素な形で、JavaBeansにアクセスすることができます。

名前は、${bean.name}です。

ただ、注意点としては、JavaBeansから、ゲッターメソッドを削除してしまうとEL式がエラーになってしまうので、必ずゲッターメソッドを記述するようにしましょう。

EL式の暗黙オブジェクト

EL式にも、通常のJSPとは別にEL式専用の暗黙オブジェクトがあります。

EL式の暗黙オブジェクトの一覧です。

名前 説明
pageContext PageContextオブジェクト
pageScope  ページスコープのMap
requestScope リクエストスコープのMap
sessionScope セッションスコープのMap
applicationScope アプリケーションスコープのMap
param リクエストパラメータのMap
paramValue 複数の値を持つリクエストパラメータのMap
header ヘッダのMap
headerValue 複数の値を持つヘッダのMap
initParam 初期パラメータのMap
cookie クッキーの名前と値のMap

例えば…

リクエストスコープの暗黙オブジェクトから、値を取得する場合は下記のように記述します。

1
{$requestScope.(値)}

EL式で、条件分岐や、ループ文を使うには?

EL式の制約として、スクリプトレット内(<% ~ %>)では使用できない点というのがあります。(もし、スクリプトレット内で使ってしまうとエラーになってしまいます。)

もし、EL式で、繰り返し分や、条件分岐を使いたい場合は、JSTLというカスタムタグを使うことになります。

JSTLの使い方については下記の記事で解説しています。

【JSP】JSTLを使うには?(カスタムタグの基本や種類についても)

スポンサーリンク
  • 2018 04.21
  • miyabisan2
  • コメントを書く
  • Java
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 04.14

    【JSP、サーブレット、JSTL】バージョン対応表

  2. 2018 05.04

    【Java】Apache Mavenの基礎知識

  3. 2018 04.01

    【Javaサーブレット】セッション管理について

  4. 2018 06.23

    【Java】パッケージのimport(インポート)について(static importも)

  5. 2018 05.04

    【Java】ロギング(ログ出力)ライブラリの比較

  6. 2018 04.30

    【Java】オブジェクト指向:インスタンス変数の初期化(コンストラクタ)、thisキーワード

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【JSP】構成要素(コア要素、ディレクティブ、アクショ…

【JSP】JSTLを使うには?(カスタムタグの基本や種…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー