표현 언어 (EL - Expression Language)
1. 표현 언어 (EL - Expression Language) 란?
표현 언어(Expression Language)는 JSTL(JSP Standard Tag Library) 1.0 규약에 소개된 내용으로서 JSP 2.0 버전부터 표현 언어가 포함되었습니다. JSP 2.1 버전에서는 표현 언어와 관련된 규약을 별도 문서로 제공하고 있습니다.
표현 언어를 사용하면 표현식을 사용하는 것보다 간단한 방법으로 값을 출력할 수 있습니다.
1.1 표현 언어의 기본 문법
표현 언어는 다음과 같이 $와 표현식 그리고 괄호(‘{’ 와 ‘}’)를 사용하여 값을 표현합니다.
${ expr } |
표현 언어는 액션 태그나 커스텀 태그의 속성값으로 사용할 수 있습니다. 또한 스크립트 요소 부분에서도 표현식처럼 값을 출력하기 위해 사용할 수 있습니다.
예)
<jsp:include page= “/module/${skin.id}/header.jsp” flush= “true” /> <b>${sessionScope.member.id}</b>님 환영합니다. |
JSP 2.1 버전부터는 ${expr} 현식뿐만 아니라 #{expr} 구문을 새롭게 지원하고 있다. #{expr} 형식은 JSP(JavaServer Faces) 에서 사용되던 표현 언어 구문으로 JSP 2.1 버전에 새롭게 추가 되었다. #{expr} 과 ${expr} 의 가장 큰 차이점은 실제로 EL 의 값을 언제 생성하느냐에 있다.
#{expr} 형식의 EL은 실제로 값이 필요할 때 계산을 수행하기 때문에 Deferred Expression 이라고 부른다. #{expr}은 곧바로 값이 생성되는 것이 아니기 때문에 JSP의 템플릿 텍스트에서는 사용할 수 없다. 예를 들어, 아래와 같이 #{epr}을 일반 텍스트에서 사용하면 예외가 발생한다.
<%-- JSP의 템플릿 텍스트에서 #{expr}을 사용하면 에러 발생 --%> #{ sessionScope.name.id} 님 환영합니다. |
2. 표현언어의 기본 객체
[표 15.1] EL이 제공하는 11개의 기본 객체
기본 객체 | 설명 |
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( 이름)의 결과와 동일하다. |