EL (Expression Language)


EL(Expression Language)
  • は言語を表し、ELは値を表すためのスクリプト言語であり、JSPの基本文法を改善する役割を果たしている.
  • ELが提供する機能
  • JSPの範囲に適合する属性
  • を使用
  • の集合オブジェクトへのアクセス方法
  • を提供する.
  • は、数値演算、関係演算および論理演算子
  • を提供する.
  • Javaクラスメソッド呼び出し
  • EL
  • 内蔵オブジェクト
    言語を表す表現方法
    構文
    ${expr}
    
    expr: 표현언어가 정의한 문법에 따라 값을 표현하는 식
    <jsp:include page="/module/${skin.id}/header.jsp" flush="true" />
    <b>${sessionScope.member.id}</b>님 환영합니다.
  • ELは、JSPのスクリプト要素(スクリプト、式、宣言子)以外の部分で使用することができ、式によって式よりも値を容易に出力することができる.
  • ELのデフォルトオブジェクト

    ELのデフォルトオブジェクトの使用例
  • pageContextおよびrequestが所有する方法をELとして使用する.
  • ELを熟知すれば、Javaコードを使用するよりもjspを簡潔に記述することができます.
  • ELのデータ型
  • ブール型-trueとfalse
  • 整数タイプ-0から9の整数負の値に「-」
  • を加算します.
  • 実数タイプ-0から9で構成され、3.24 e 3のような小数点(".")で表すことができます.
  • 文字列タイプ-引用符("または")を含む文字列.一重引用符(")で表される場合は、値に含まれる引用符は"とともに使用する必要があります.
  • 記号自体はで表されます.
  • 空タイプ-null
  • オブジェクト・アクセス・ルール
    ${<표현1>.<표현2>}
  • が1を表す場合、または2がnullを表す場合、nullが返されます.
  • が1をMapと表す場合、2をキーとする値が返されます.
  • が1がListまたは配列であることを示す場合、2が整数であることを示す場合、その整数の2番目のインデックスに対応する値が返される.
  • 整数でないとエラーになります.
  • が1がオブジェクトであることを示すと、2を表すgetterメソッド呼び出しの結果が返される.
  • student.name → student.getname()
  • ELの数値演算子
  • :加算
  • -:減算
  • *:乗算
  • /またはdiv:除算
  • %またはmod:残りの
  • 非数値オブジェクトと数値演算子
  • を使用する場合、オブジェクトを数値に変換して演算子を実行します:${"10"+1}→${10+1}
  • に変換できないオブジェクトを数値演算子と組み合わせて使用すると、エラーが発生します. ${"列"+1}→エラー
  • の数値演算子でnullが使用されている場合は、0とします. ${null + 1} → ${0+1}
  • 比較演算子
  • ==またはeq
  • != またはne
  • <またはlt

  • またはgt
  • <=またはle

  • =またはge
  • 文字列比較:${str=="値"}str.compareTo("値")=0は
  • と同じ
    論理演算子
  • &または
  • ||または
  • ! またはnot
  • Null演算子、比較選択演算子{{Nullえんざんし:ひかくせんたくえんざんし}}

    演算子の優先度
  • [] .
  • ()
  • (シングル)not!empty
  • /div % mod

  • < > <= >= lt gt le ge
  • == != eq ne
  • && and
  • || or
  • ? :
  • EL無効:JSPで指定
  • ページインジケータに
    <%@ page isELignored = "true"%>
    (デフォルトはfalse)を指定します.
  • 実習
    Elscopeオブジェクトの使用
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%
      pageContext.setAttribute("p1", "page scope value");
      request.setAttribute("r1", "request scope value");
      session.setAttribute("s1", "session scope value");
      application.setAttribute("a1", "application scope value");
    %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <!--JSP로 출력하는 경우-->
    pageContext.getAttribute("p1") : <%=pageContext.getAttribute("p1")%> <br>
    <!--EL로 출력하는 경우-->
    pageContext.getAttribute("p1") : ${pageScope.p1} <br>
    request.getAttribute("r1") : ${requestScope.r1} <br>
    session.getAttribute("s1") : ${sessionScope.s1} <br>
    application.getAttribute("a1") : ${applicationScope.a1} <br>
    
    pageContextt.getAttribute("p1") : ${p1} <br> <!--key가 겹치지 않는다면 이렇게도 가능, 근데 명시적이지 않음..-->
    
    </body>
    </html>
    pageContext.getAttribute("p1") : page scope value
    pageContext.getAttribute("p1") : page scope value
    request.getAttribute("r1") : request scope value
    session.getAttribute("s1") : session scope value
    application.getAttribute("a1") : application scope value
    pageContextt.getAttribute("p1") : page scope value
    演算の使用
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <% request.setAttribute("k", 10); %>
    <% request.setAttribute("m", true); %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <h3>EL연산</h3>
    k: ${k} <br>
    k + 5 : ${k + 5} <br>
    k * 5 : ${k * 5} <br>
    k / 5 : ${k / 5} <br>
    <h3>EL비교논리연산</h3>
    k : ${k} <br>
    k > 5 : ${k>5} <br>
    k < 5 : ${k<5} <br>
    m : ${m} <br>
    !m : ${!m} <br>
    </body>
    </html>
    EL연산
    k: 10
    k + 5 : 15
    k * 5 : 50
    k / 5 : 2.0
    EL비교논리연산
    k : 10
    k > 5 : true
    k < 5 : false
    m : true
    !m : false
    isELIgnored
    <%@ page isELIgnored="true" %>
    EL연산
    k: ${k}
    k + 5 : ${k + 5}
    k * 5 : ${k * 5}
    k / 5 : ${k / 5}
    EL비교논리연산
    k : ${k}
    k > 5 : ${k>5}
    k < 5 : ${k<5}
    m : ${m}
    !m : ${!m}
    ELは解釈せず、文字形式で現れる.