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 |