본문 바로가기
boostcource/boostcourse_web programming

EL (Expression Language)

by sgyeong 2024. 4. 20.

EL (Expression Language)

 

표현 언어
표현 언어(Expression Language)는 값을 표현하는 데 사용하는 스크립트 언어로 JSP의 기본 문법을 보완하는 역할을 한다.

 

표현 언어가 제공하는 기능
- JSP의 스코프(scope)에 맞는 속성을 사용
- 집합 객체에 대한 접근 방법 제공
- 수치 연산, 관계 연산, 논리 연산자 제공

- 자바 클래스 메소드 호출 기능 제공
- 표현 언어만의 기본 객체를 제공

 

 

표현 언어의 표현 방법

${expr }

* expr - 표현 언어가 정의한 문법에 따라 값을 표현하는 식


예제) 

<jsp:indclude page="/module/${skin.id}/header.jsp" flush="true" />

<b>${sessionScope.member.id}</b>님 환영합니다.


* 표현 언어는 JSP의 스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있으며, 표현식을 통해서 표현식보다 편리하게 값을 출력할 수 있다.

 

 

 

* 표현 언어의 기본 객체

기본 객체 설명
pageContext JSP의 page 기본 객체와 동일하다.
pageScope pageContext 기본 객체에 저장된 속성의 <속성,값> 매핑을 저장한 Map 객체
requestScope request 기본 객체에 저장된 속성의 <속성,값> 매핑을 저장한 Map 객체
sessionScope session 기본 객체에 저장된 속성의 <속성,값> 매핑을 저장한 Map 객체
applicationScope application 기본 객체에 저장된 속성의 <속성, 값>매핑을 저장한 Map 객체
param 요청 파라미터의 <파라미터이름,값> 매핑을 저장한 Map 객체
파라미터 값의 타입은 String으로서, request.getParameter(이름)의 결과와 동일하다.
paramValues 요청 파라미터의 <파라미터이름,값배열> 매핑을 저장한 Map 객체
값의 타입은 String[ ] 으로서, request.getParameterValues(이름)의 결과와 동일하다.
header 요청 정보의 <헤더이름,값> 매핑을 저장한 Map 객체
request.getHeader(이름)의 결과와 동일하다.
headerValues 요청 정보의 <헤더이름,값 배열> 매핑을 저장한 Map 객체
request.getHeaders(이름)의 결과와 동일하다.
cookie <쿠키 이름,Cookie> 매핑을 저장한 Map 객체
request.getCookies()로 구한 Cookie 배열로부터 매핑을 선언한다.
initParam 초기화 파라미터의 <이름,값> 매핑을 저장한 Map객체
application.getInitParameter(이름)의 결과와 동일하다.

 

 

표현 언어의 기본 객체 사용 예

 

 

표현 언어의 데이터 타입


- 불리언 타입 : true / false
- 정수 타입 : 0~9로 이루어진 정수 값. 음수의 경우 '-'가 붙는다.
- 실수 타입 : 0~9로 이루어져 있으며, 소수점('.')을 사용할 수 있고, 3.24e3과 같이 지수형으로 표현이 가능하다.
- 문자열 타입 : 따옴표(' 또는 ")로 둘러싼 문자열. 만약 작은 따옴표(')를 사용해서 표현할 경우 값에 포함된 작은 따옴표는 \' 와 같이 \기호와 함께 사용해야 한다.
- \기호 자체는 \ \로 표시한다.
- 널 타입 : null

 

 

문법

${<표현1>. <표현2>}

 

 

 

객체 접근 규칙

 

- 표현 1이나 표현 2가 null이면 null을 반환한다.
- 표현 1이 Map일 경우 표현 2를 key로 한 값을 반환한다.
- 표현 1이 List나 배열이면 표현 2가 정수일 경우 해당 정수 번째 index에 해당하는 값을 반환한다.

- 만약 정수가 아닐 경우에는 오류가 발생한다.
- 표현 1이 객체일 경우는 표현 2에 해당하는 getter 메소드에 해당하는 메소드를 호출한 결과를 반환한다.

 

 

표현 언어의 수치 연산자 

 

-  + : 덧셈
-   - : 뺄셈

-  * : 곱셈
-  / 또는 div : 나눗셈
-  % 또는 mod : 나머지

-  숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환한 후 연산자를 수행한다. 
    ${"10"+1}    -->   ${10+1}

- 숫자로 변환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생한다. 
    ${"열"+1}   -->   에러
- 수치 연산자에서 사용되는 객체가 null이면 0으로 처리한다.
    ${null+1}   -->   ${0+1}

 

 

비교 연산자

 

-  == 또는 eq

-  != 또는 ne

-  < 또는 lt

-  > 또는 gt

-  <= 또는 le

-  >= 또는 ge

-  문자열 비교 : ${str == '값'}  str.compareTo("값") == 0 과 동일

 

 

논리 연산자

 

-  && 또는 and

-  || 또는 or

-  ! 또는 not

 

 

empty 연산자, 비교선택 연산자

 

empty <값>

1) <값>이 null이면 true를 리턴한다.
2) <값>이 빈 문자열(" ")이면 true를 리턴한다.
3) <값>이 길이가 0인 배열이면 true를 리턴한다.
4) <값>이 빈 Map이면 true를 리턴한다.
5) <값>이 빈 Collection이면 true를 리턴한다.
6) 이 외의 경우에는 false를 리턴한다.

 

예)

<수식> ? <값1> : <값2>

<수식>의 결과값이 true이면 <값1>을 리턴하고, false이면 <값2>를 리턴한다.

 

 

연산자 우선순위

 

1. [ ] .

2. ( )

3.  - (단일) not ! empty
4. * / div % mod
5. + -
6. < > <= >= lt gt le ge

7.  == != eq ne

8. && and

9. || or

10. ? :

 

 

표현 언어 비활성화 : JSP에 명시하기

 

- <%@ page isELIgnored = "true" %>    (default 값은 false이다.)

출처 https://docs.oracle.com/cd/E19316-01/819-3669/bnaic/index.html





 

 

 

 

참고 : boostcourse    https://www.boostcourse.org/web316/lecture/254288?isDesc=false

     

 

웹 프로그래밍(풀스택)

부스트코스 무료 강의

www.boostcourse.org

 

'boostcource > boostcourse_web programming' 카테고리의 다른 글

EL(Expression Language) -3  (0) 2024.04.20
EL (Expression Language) -2  (0) 2024.04.20
Application scope  (0) 2024.04.19
Session scope  (0) 2024.04.19
Request scope  (0) 2024.04.19