EL, Expression Language
표현언어는 값을 표현하는데 사용되는 스크립트 언어, JSP의 기본 문법을 보완하는 역할
EL이 제공하는 기능
- JSP의 scope에 맞는 속성 사용 → 쉽게 scope 변수 값 접근 가능
- 집합 객체에 대한 접근 방법 제공
- 수치연산, 관계 연산, 논리 연산자 제공
- 자바 클래스 메소드 호출 기능 제공
- 표현언어만의 기본 객체 제공
EL의 표현 방법
-
${expr }
, expr: 표현언어가 정의한 문법에 따라 값을 표현하는 식
→ JSP의 스크립트 요소를 제외한 나머지 부분에서 사용 가능, 표현식을 통해서 편리하게 값 출력
*expr값의 이름이 중복 될 때에는 작은 범위 scope인 pageContext부터 찾기 시작
‣ EL로 변수 사용 (jsp)
EL의 기본 객체
- pageContext : JSP의 page 기본 객체
- pageScope : pageContext 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
- requestScope : request 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
- sessionScope : session 기본 객체에 지정된 속성의 <속성, 값> 매핑을 저장한 Map객체
- applicationScope : application 기본 객체에 지정된 <속성. 값> 매핑을 저장한 Map객체
- param : 요청 파라미터의 <parameter 이름 , 값> 매핑을 저장한 Map 객체, 값의 타입은 String[]으로
request.getParameter(이름)
결과와 동일
- paramValues : 요청 파라미터의 <parameter 이름 , 값배열> 매핑을 저장한 Map 객체, 값의 타입은 String[]으로
request.getParameterValues(이름)
결과와 동일
- header : 요청 정보의 <헤더이름, 값> 매핑을 저장한 Map 객체,
request.getHeader(이름)
결과와 동일
- headerValues : 요청 정보의 <헤더이름, 값 배열> 매핑을 저장한 Map 객체,
request.getHeaderValues(이름)
결과와 동일
- cookie : <쿠키 이름, Cookie> 매핑을 저장한 Map 객체,
request.getCookies()
로 구한 Cookie 배열로부터 매핑을 생성
- initParam: 초기화 파라미터의 <이름, 값> 매핑을 저장한 Map 객체,
application.getInitParamete(이름)
의 결과와 동일
객체 접근 규칙
${<expr1>.<expr2>}
- expr1 이나 expr2가 null이라면 null을 반환
- expr1이 Map 일 경우 expr2를 key로 한 값을 반환
- expr1이 List 나 배열이면 expr2가 정수일 경우 해당 정수 번째 index에 해당하는 값을 반환
- 정수가 아닐 경우에 오류 발생
- expr1이 객체일 경우 expr2에 해당하는 getter 메소드에 해당하는 메소드를 호출한 결과를 반환
표현언어의 수치 연산자
-
'+'
-
'-'
-
'*'
-
'/ or div'
-
'% or mod'
-
숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환 후 연산자 수행
-
숫자로 변환 할 수 없는 객체와 수치 연산자를 사용하면 에러
-
수치 연산자에서 사용되는 객체가 null이면 0으로 처리
-
/ 나 % 가 html 태그나 예약어로 잡혀있을 경우 div나 mod를 사용해서 수치 연산
비교 연산자
== or eq
!= or ne
< or lt
> or gt
<= or le
>= or ge
*문자열 비교 ${str == '값'}
과 str.compareTo("값") == 0
과 동일
‣ EL로 연산자 사용 (jsp)
논리 연산자
- && or and
- || or or
- ! 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, ge, le
- ==, != , eq, ne
- &&, and
- || , or
- ? , :
표현언어 비활성화
→ JSP에 명시하기
<%@ page isELIgnored = "true"%>