Dev/frontend

표현 언어 (EL - Expression Language)

Luigi.yoon 2017. 11. 1. 17:00

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( 이름)의 결과와 동일하다.