[spring] EL (Expression Language)

2024. 9. 29. 23:36·SPRING
반응형

EL은 java bean의 property이다. jsp는 스크립트의값을 간결하고 편리하게 사용하기 위해 EL을 사용한다.

 

1.EL표현언어

EL 은 $ 와 {} 만 사용하여 값을 표현한다. 이때, {} 안에는 값으로 표현되는 것만  와야한다.

<%= x %> 

처럼 쓰는대신 아래와 같이 쓸 수 있다.

${x}

: x 변수의 값을 출력   

${arr[0]} 또는 ${arr['0']}

: 배열 arr 안의 0번째 값

👉<% out.print(arr[0]); %>

${member.name} 또는 ${member['name']}

 : member 객체의 getName() 호출한다

👉 <%=member.getName()%> 

2. EL 기본객체(내장객체) 11대

기본객체 jsp 내장객체와 비교
pageContext pageContext  객체
pageScope page 객체 참조
requestScope request 객체 참조
sessionScope session 객체 참조
applicationScope application 객체 참조
param request.getParameter()
paramValues request.getParameterValues()
header request.getHeader()
headerValues request.getHeaderValues()
cookie request.getCookies()
initParam application.getInitParameter()

 

📍예시

request.getParameter("data"); ~> ${ param.data }

request.getAttribute("data2");  ~> ${ requestScope.data2 }

session.getAttribute("id");  ~> ${ sessionScope.id }

application.getAttribute("address");  ~> ${ applicationScope.address }

Scope 는 생략가능하다 ${ sessionScope.id } == ${ id }
Scope 생략시 찾는 순서
pageScope > requestScope > sessionScope > applicationScope

 

🌿예제

 1).페이지 Scope

<% pageContext.setAttribute("kor", "100"); %>
JSP : <%=pageContext.getAttribute("kor") %><br>
EL  : ${pageScope.kor }<br>
EL  : ${ kor }<br>

 

 2) request Scope

JSP : <%=request.getAttribute("eng") %><br>
EL  : ${requestScope.eng }<br>
EL  : ${ eng }<br>

 3) session Scope

<% session.setAttribute("mat", "300"); %>
JSP : <%=session.getAttribute("mat") %><br>
EL  : ${sessionScope.mat }<br>
EL  : ${ mat }<br>

 4) application Scope

<% application.setAttribute("sci", "1000"); %>
JSP : <%=application.getAttribute("sci") %><br>
EL  : ${applicationScope.sci }<br>
EL  : ${ sci }<br>

 

3.표현언어에서 사용하는 연산자

123 + 5<br/>
 <%out.print(456+7); %><br/>
 표현식    : <%=789+5 %><br/>
 표현언어  : ${100+3 }<br/>

 더하기 : ${123+456 }<br/> <!-- 579 -->
 빼기 : ${123-456 }<br/> <!-- -333 -->
 곱하기 : ${123*456 }<br/><!-- 56088 -->
 나누기 : ${123/456 }<br/><!-- 0.26973684210526316 -->
 나누기 : ${5 div 6  }<br/> <!-- 0.8333333333333334 -->
 나머지 : ${5 mod 6  }<br/><!-- 5 -->
 2가 3보다 작다 : ${ 2 < 3 }<br/><!-- true -->
 2가 3보다 크다 : ${ 2 gt 3 }<br/><!-- false -->
 삼항연산자     : ${ (5 > 3)? 5 : 3 }<br/><!-- 5 -->
 HOST           : ${ header["host"] }<br/> 
 <!-- 리퀘스트 해더안에있는 host라는 속성값을 꺼내서 알아서 찍는다. -->
 User-Agent     : ${ header["User-Agent"] }<br/>
 Accept        :  ${ header["Accept"] }<br/>

 

🌿사용자 정의 함수 사용

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <tlib-version>1.0</tlib-version>
    <short-name>math</short-name>
    <function>
      <name>mysqrt</name>
      <function-class>java.lang.Math</function-class>
      <function-signature>double sqrt(double)</function-signature>
    </function> 
    <function>
      <name>add</name>
      <function-class>net.el.Compute</function-class>
      <function-signature>int add(java.lang.String, java.lang.String)</function-signature>
    </function> 
    <function>
      <name>sub</name>
      <function-class>net.el.Compute</function-class>
      <function-signature>int sub(java.lang.String, java.lang.String)</function-signature>
    </function> 
    <function>
      <name>mul</name>
      <function-class>net.el.Compute</function-class>
      <function-signature>int mul(java.lang.String, java.lang.String)</function-signature>
    </function> 
</taglib>
  • 위 코드는 JSP에서 사용할 커스텀 태그 라이브러리(TLD, Tag Library Descriptor)이다. 이 TLD 파일은 JSP 페이지에서 Java의 Math 클래스와 net.el.Compute 클래스를 참조하여 sqrt, add, sub, mul 함수들을 정의하게 된다.
sqrt(25) : ${user:mysqrt(25)}
합 : ${user:add(3,5) }<br/>
차 : ${user:sub(3,5) }<br/>
곱 : ${user:mul(3,5) }

<%@taglib prefix="calc" uri="http://www.hth.com/test/mytld.tld" %>
  • @taglib: calc라는 접두사(prefix)를 가진 TLD 파일을 사용하여 사용자 정의함수를 호출할 수 있도록 한다.
  • uri : 사용자 정의 태그 라이브러리를 JSP 페이지에 통합하기 위한 경로를 HTTP 프로토콜을 사용하여 웹에서 TLD 파일을 참조하며 제공한다.
x : ${ param.x }와 y:${ param.y } 의 합 : ${calc:add(param.x, param.y) }
  • 위 코드는 el5.jsp이며 아래 el5Form.jsp에서 입력받은 x와y파라미터를 각각 form에 담아 el5.jsp로 submit한다.
  <form action="el5.jsp" method="post">
   X : <input type="text" name="x" value="10" /><br />
   Y : <input type="text" name="y" value="20" /><br />
   <input type="submit" value="확인" />
  </form>

반응형

'SPRING' 카테고리의 다른 글

[spring]스프링 부트 MVC구조  (3) 2024.10.08
[spring] 스프링 부트 Controller  (0) 2024.10.08
[spring] Spring Framework에서의 datasource 설정 및 Spring Boot migration  (2) 2024.10.04
[spring]Payload,Parameter, Attribute들의 관계  (2) 2024.10.01
[spring]JSTL(JSP Standard Tag Library)  (2) 2024.10.01
'SPRING' 카테고리의 다른 글
  • [spring] 스프링 부트 Controller
  • [spring] Spring Framework에서의 datasource 설정 및 Spring Boot migration
  • [spring]Payload,Parameter, Attribute들의 관계
  • [spring]JSTL(JSP Standard Tag Library)
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (154)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (16)
      • 기타 (5)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (0)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
      • 자료구조&알고리즘 (4)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    태그
    일지
    javascript
    HTML
    티스토리챌린지
    SQL
    오블완
    link
    tag
    JQuery
    개발자
    JS
    AJAX
    input
    db
    부트캠프
    자기계발
    링크
    java
    CSS
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
라텐느
[spring] EL (Expression Language)
상단으로

티스토리툴바