1. EL이란?
Expression Language은 JSF와 JSP에서 JavaBeans의 동적 콘텐츠에 접근할 수 있는 간결한 표현식이다.
1.1 EL의 특징
- 기본적으로
${expr}또는#{expr}구분자를 통해 나타낸다. - JSP page의 Action Elements와 Template Data에서 사용.
- 표현식의 Deffered Evaluation(지연된 평가)와 Immediate Evaluation(즉시 평가) 기능을 제공.
- 표현식에서 JavaBeans의 데이터를 get하거나 set가능.
- 표현식에서 메소드를 호출가능.
1.2. EL의 역사
-
ECMAScript와 XPath의 영감을 받음.
-
JSP 1.2의 JSTL 1.0 스펙의 일부로 JSTL 액션의 속성 값을 런타임에 입력하는 간결한 문법으로써 EL이 처음 등장.
"JSTL 1.0의 EL은 오직 JSTL 액션에서만 사용 가능했다"
The JSP Standard Tag Library (JSTL) version 1.0 (based on JSP 1.2) was therefore first to introduce an Expression Language (EL) to make it easy for page authors to access and manipulate application data without having to master the complexity associated with programming languages such as Java and JavaScript.
-
JSP 2.0부터는 별도의 기술로 JSP 스펙에 포함 되었으며, JSP컨테이너 스스로가 EL표현식을 해석, JSTL 액션이외의 커스텀 액션, 템플릿 데이터에서도 사용 가능해짐.
"JSP 2.0부터 기술 스펙에 등장한 EL은 JSP의 모든 부분에서 사용 가능하다"
Given its success, the EL was subsequently moved into the JSP specification (JSP 2.0/JSTL 1.1), making it generally available within JSP pages (not just for attributes of JSTL tag libraries).
1.3. EL의 스펙
- 기술 스펙은 JSR-341에 기술.
- 마지막 버전은 EL 3.0, 이유는 Jakarta EE 참조.
2. EL표현식의 구분
EL 표현식은 Evaluation시점, 메소드 호출여부, 값 쓰기 가능여부에 따라 구분되어 진다.
2.1. Evaluation 시점에 따른 구분
Evaluation 시점에 따라 Immediate Evaluation(즉시 평가)와 Deferred Evaluation(지연된 평가)두가지를 가진다.
2.1.1. Immediate Evaluation
컴파일된 JSP 객체가 실행되는 런타임에 바로 Evaluation수행.
${표현식}
2.1.2. Deferred Evaluation
태그에 따라 정해진 시점에 Evaluation 수행.
#{표현식}
2.2. 메소드 호출 여부에 따른 구분
EL에서의 표현식은 크게 메소드를 호출하는 *Method Expression(메소드 표현식)*과 그렇지 않은 *Value Expressions(값 표현식)*으로 나뉠 수 있다.
2.2.1. Value Expressions
- 값 표현식은 템플릿 데이터 및 Action Elements에서 사용가능.
- 데이터 쓰기 가능 여부에 따라 R-value 표현식과 L-value 표현식로 나뉜다.
2.2.2. Method Expression
JSP에서 선언된 객체의 메소드 혹은 정적 메소드를 호출 가능
public class MyObject {
public String getMessage(String message) {
return "Hello "+message;
}
}
<%
MyObject obj = new MyObject();
request.setAttribute("obj", obj);
%>
${obj.getMessage("world!") }
2.3. 쓰기가능 여부에 따른 구분
2.3.1. R-value Expressions
- 데이터 읽기만 가능.
- Immediate Evaluation 구문
${}에서 작성된 표현식은 모두 R-value 표현식이다.
3.1.2. L-value Expressions
- 데이터 읽고 쓰기 가능.
- L-value 표현식을 허용할 수 있는 태그 속성에서만 사용 가능.
댓글
댓글 쓰기