본문 바로가기
카테고리 없음

EL(JSP Expression Language)

by epro 2007. 4. 24.

EL 핵심정리

  • EL 표현식은 항상 중괄호로 묶고 앞에 달러($)기호를 붙입니다. ex) ${표현식}
  • 표현식에서 첫번째 변수는 내장 객체이거나 아니면 다음 4가지 생존범위에 속하는 속성
    (page, request, session, application)
  • dot연산자는 맵 키 이름이나 빈 프로퍼티 이름으로 값을 읽는다.
    예) ${foo.bar} 에서 foo가 맵이라면 bar는 키, foo가 빈이라면 bar는 프로퍼티
  • []연산자는 도트 연산자보다 훨씬 기능이 강력함. []연산자는 배열과 리스트 값도 읽을 수 있음.
    또, []안에 변수를 포함한 표현식을 쓸 수도 있으며, 얼마든지 많은 []을 포함할 수 있음.
  • musicList가 ArrayList라고 한다면, musicList의 첫번째 값을 읽을 때,
    ${musicList[0]}, ${musicList["0"]} 둘 다 가능.
    EL에서는 인덱스값에 따옴표 허용.
  • []안에 있는 것에 따옴표가 없다면, 컨테이너는 이 값이 무엇인지 실행해보고,
    따옴표가 있고 연산자 왼쪽이 배열이나 리스트가 아니라면 []안에 값을 프로퍼티나 키 이름이라고 생각함.
  • EL내장객체는 딱 하나를 빼고 모두 맵이다.
    맵 내장 객체만 있으면 4가지 생존범위 객체에 묶여 있는 속성, 요청 파라미터값, 헤더값, 쿠키값, 컨텍스트 초기화 파라미터에 접근할 수 있다.
    맵타입이 아닌 객체는 pageContext뿐.. 이는 PageContext 객체 참조 변수임.
  • EL에서 request 객체에 접근할 수 있는 유일한 길은 pageContext 내장 객체를 통해서가능하다.
    (꼭 request에 접근하지 않더라도 다른 EL 내장객체 param/paramValues, header/headerValues, cookie를 가지고서도 필요한 정보를 읽을 수 있다.)
  • EL 함수를 사용하면 일반 자바 클래스에 있는 정적인 공용(public static) 메소드를 호출할 수 있다.
  • TLD(태그 라이브러리 서술자) 파일을 사용해서 함수와 실제 정적인 메소드를 서로 매핑한다.
  • JSP에서 함수를 사용하려면, taglib지시자로 namespace를 선언해야 한다.
    taglib지시자에 있는 앞 첨자(prefix)를 가지고 컨테이너는 코딩에서 호출한 함수가 어느 TLD에 있는지 파악하는데 사용함
    예) <% taglib prefix="mine" uri="DiceFunctions" %>

Reference : Head First Servlets & JSP

댓글