Expression Language
jsp 2.0스펙에 추가된 개념.
구문
${...}
${ 속성명 }
변수라 적지 않고 속성명이라 적은 이유는 페이지 이동에 값을 담는 방법 4가지 scope(pageContext, request, session, application)에 저장되어 있는 속성명들만 el 표현식으로 쓸 수 있기 때문.
특징
제어문의 구조를 가지고 있지 않다. 할당할 수 없다.
목적
- 값을 출력할 때 사용한다.
EL → 속성의 이름을 사용한다.
스코프안에 저장되어있는 속성의 데이터를 쉽게 출력하기 위한 것.
1. JSP의 네가지 기본 객체가 제공하는 영역의 속성 사용
- jsp가 제공하는 기본 영역(scope) 4가지
- pageContext < request <session < application
2. 연산자 지원 기능.
산술 연산자의 특징 ( +가 concat의 기능이 존재하지 않는다)
연산자 중심이기 때문에 덧셈 그 자체에 기능을 둔다.
연산자보다는 연산자 기호를 많이 쓴다.(and eq...)
empty()
scope에서 작은영역부터 검사해 나간다.
값을 찾았을 시 더이상 검색하지 않는다.
특징
- +가 concat의 기능이 없음
- =(할당연산자)가 존재하지 않음
- =가 없기때문에 ++, - - 지원이 되지 않음
3. (속성) 자바 객체에 대한 접근 기능 지원
asd가 속성
이렇게 <%=%> (스크립틀릿)을 사용했을 때와
el을 사용했을 때의 차이가 난다.
2.2버전에서는 .getMem_id()와 같이 메소드에 접근하지 못했었다
3.0 버전 이후에 지원하기 시작함.
4. (속성) 집합객체에 대한 접근 기능 지원
**\은 이스케이프코드(text로 출력된다)
.get()은 그대로 자바 코드를 리플렉션해서 반영한다.
그래서 오류가 바로 떠 버림.
.get() 방식 말고 2.2버전방식으로 검색하면 화이트스페이스로 대체
el의 기능 원리
- 페이지를 검색
- 리퀘스트 검색
- 세션 검색
- 어플리케이션 검색
→ 없다면 공백으로 출력
→ 도중에 찾았다면 검색종료.
pageContext 와 request에 동일안 속성명을 사용하여 값을 적었다면,
$ 을 사용했 을 때 request에 저장된 녀석은 꺼내올 수 없음
이 때 사용하는게 기본객체를 이용한 방법
5. EL의 기본 객체 지원
이렇게 직접 콕 찍어서 불러올 수 있다.
출력한 결과값들.
배열로 받기
jsp → 9개의 기본객체가 존재한다.
el → 11개의 기본객체
getTime() 가져와보기
$
$ 도 되긴 한다.
[ ]연상배열이라고 부른다.
Uploaded by Notion2Tistory v1.1.0