표현 언어(Experession Language)
값을 표현하는 데 사용되는 스크립트 언어로써, JSP의 기본 문법을 보완하는 역할을 한다.
JSP의 스크립트 요소(스크립틀릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있으며, 표현식을 통해서 표현식보다 편리하게 값을 출력할 수 있다.
${expr}과 같이 사용한다.
※ 표현언어의 기능
∎ JSP의 스코프에 맞는 속성 사용
∎ 집합 객체에 대한 접근 방법 제공
∎ 수치, 관계, 논리 연산자 제공
∎ 자바 클래스 메소드 호출 기능 제공
∎ 표현언어만의 기본 객체 제공
예제
1 2 | <jsp:include page="/module/${skin.id}/header.jsp" flush="true" /> <b>${sessionScope.member.id}</b>님 환영합니다. | cs |
표현언어의 기본객체
기본 객체 |
설명 |
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(이름)의 결과와 동일 |
예제
1 2 3 4 5 6 7 8 9 10 11 12 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setAttribute("name", "hh_lin"); %> <html> <head> <title>EL Object</title> </head> <body> 요청 URI : ${pageContext.request.requestURI} <br> request의 name 속성 : ${requestScope.name} <br> code 파라미터 : ${param.code} </body> </html> | cs |
표현언어의 데이터 타입
타입 |
값 |
Boolean | true / false |
정수 |
0~9로 이루어진 정수 값. 음수의 경우 '-'가 붙음. |
실수 |
0~9로 이루어져 있으며, 소수점을 사용할 수 있음. 3.24e3과 같이 지수형으로 표현 가능함. |
문자열 |
따옴표(' 또는 ")로 둘러싼 문자열. 만약 작은 따옴표를 사용해서 표현할 경우 값에 포함된 작은 따옴표는 \기호와 같이 사용해야 한다. (\') |
Null |
null |
객체 접근 규칙
${<표현1>.<표현2>}
- 표현1이나 표현2가 null이면 null을 반환한다.
- 표현1이 Map일 경우 표현2를 Key로한 값을 반환한다.
- 표현1이 List나 배열이면 표현2가 정수일 경우 index에 해당하는 값을 반환한다. 만약 정수가 아닐 경우에는 오류가 발생한다.
- 표현 1이 객체일 경우는 표현2에 해당하는 getter 메소드에 해당하는 메소드를 호출한 결과를 반환한다.
산술 연산자
+, -, *, / 또는 div, % 또는 mod
∎ 숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환 후 연산자를 수행
ex) ${"10" + 1} => ${10 + 1}
∎ 숫자로 변환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생
ex) ${"hh_lin" + 1} => error
∎ 수치 연산자에서 사용되는 객체가 null이면 0으로 처리
ex) ${null + 1} => ${0 + 1}
비교 연산자
- == 또는 eq
- != 또는 ne
- < 또는 lt
- > 또는 gt
- <= 또는 le
- >= 또는 ge
- 문자열 비교: ${str == '값'} str.compareTo('값') == 0과 동일
- && 또는 and
- || 또는 or
- ! 또는 not
empty 연산자
empty<값>
- <값>이 null이면 true를 리턴한다.
- <값>이 빈 문자열("")이면 true를 리턴한다.
- <값>이 길이가 0인 배열이면 true를 리턴한다.
- <값>이 빈 Map이면 true를 리턴한다.
- <값>이 빈 Collection이면 true를 리턴한다.
- 이 외의 경우에는 false를 리턴한다.
비교선택 연산자
<수식> ? <값1> : <값2>
- <수식>의 결과 값이 true이면 <값1>을, false이면 <값2>를 리턴한다.
연산자 우선순위
- [] .
- ()
- - (단일) not ! empty
- * / div % mod
- + -
- < > <= >= lt gt le ge
- == != eq ne
- && and
- || or
- ? :
표현 언어 비활성화 : JSP에 명시하기
1 | <%@ page isELIgnored="true"> | cs |
Servlet 스펙에 따라 EL지원이 다르다. Servlet 2.5버전부터 EL이 기본적으로 사용되고, 이전에는 EL이 무시되었다.
참고자료
'Web > 기타' 카테고리의 다른 글
[JSTL] JSTL - set, remove (0) | 2018.12.27 |
---|---|
[JSTL] JSTL - if, choose, forEach, import (0) | 2018.12.27 |
[JSTL] JSTL 개요 (0) | 2018.12.27 |
[EL] EL(2) (0) | 2018.12.26 |
[WEB] HTML 기초(id, class, data 속성) (0) | 2018.11.17 |