CS

[JSP] EL

뱅타 2021. 4. 15. 23:19

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의 기능 원리

  1. 페이지를 검색
  1. 리퀘스트 검색
  1. 세션 검색
  1. 어플리케이션 검색

→ 없다면 공백으로 출력

→ 도중에 찾았다면 검색종료.

pageContext 와 request에 동일안 속성명을 사용하여 값을 적었다면,

$ 을 사용했 을 때 request에 저장된 녀석은 꺼내올 수 없음

이 때 사용하는게 기본객체를 이용한 방법

5. EL의 기본 객체 지원

이렇게 직접 콕 찍어서 불러올 수 있다.

출력한 결과값들.

배열로 받기

jsp → 9개의 기본객체가 존재한다.

el → 11개의 기본객체

getTime() 가져와보기

$

$ 도 되긴 한다.

[ ]연상배열이라고 부른다.

728x90
반응형