본문 바로가기
교재 실습/자바 웹 개발 워크북

52. EL 사용하기 (1)

by Jint 2022. 6. 23.

EL(Expression Language)은 콤마(,)와 대괄호([])를 사용하여 자바 빈의 프로퍼티나 맵, 리스트, 배열의 값을 보다 쉽게 꺼내게 해주는 기술이다. 또한 스태틱(static)으로 선언된 메서드를 호출할 수도 있다. JSP에서는 주로 보관소에 들어 있는 값을 꺼낼 때 사용한다. EL을 사용하면 액션 태그를 사용하는 것보다 훨씬 더 간단히 보관소에 들어 있는 객체에 접근하여 값을 꺼내거나 메서드를 호출할 수 있다.

 

1. EL 표기법

EL은 ${}와 #{}를 사용하여 값을 표현한다. ${표현식}으로 지정된 값은 JSP가 실행될 때 JSP 페이지에 즉시 반영된다. 그래서 ${}을 '즉시 적용(Immediate evaluation)'이라 부른다. #{표현식}으로 지정된 값은 시스템에서 필요하다고 판단될 때 그 값을 사용한다. 그래서 #{}을 '지연 적용(deferred evaluation)'이라 부른다. 이런 이유로 #{}은 객체 프로퍼티의 값을 꺼내기보다는, 사용자가 입력한 값을 객체의 프로퍼티에 담는 용도로 많이 사용한다.

#{}은 특히 JSF(JavaServer Faces) 기술에서 UI를 만들 때 많이 사용한다. 다음 그림은 EL 표기법을 보여준다(그림 1).

그림 1 (EL 표기법)

앞의 그림과 같이 EL 표기법을 자바 코드로 표현하면 다음과 같다.

Member obj = (Member)pageContext.findAttribute("member");
int value = obj.getNo();

PageContext의 findAttribute()는 다음 순서에 따라 보관소(Scope Objects)를 뒤져서 객체를 찾는다. 마지막까지 뒤졌는데 없다면 null을 반환한다.

JspContext → ServletRequest → HttpSession → ServletContext → null

 

- EL에서 검색 범위 지정

EL도 <jsp:useBean>처럼 네 군데 보관소에서 값을 꺼낼 수 있다. 다만 <jsp:useBean>과 다른 점은 EL로는 객체를 생성할 수 없다는 것이다. 다음은 EL에서 보관소를 참조할 때 사용하는 이름이다(그림 2).

그림 2 (EL에서 보관소를 참조할 때 사용하는 이름)

다음 그림은ServletRequest 보관소에서 값을 꺼내는 EL 코드이다(그림 3).

그림 3 (ServletRequest 보관소)

앞의 그림과 같은 EL 코드를 자바 코드로 나타낸다면 다음과 같다.

Member obj = (Member)request.getAttribute("member");
int value = obj.getNo();

객체를 찾는 범위를 지정하지 않으면 JspContext부터 ServletContext까지 순차적으로 찾지만, 앞의 코드와 같이 범위를 지정하게 되면 해당 보관소에서만 객체를 찾는다. 못 찾으면 null을 반환한다.

 

2. JSP에서 제공하는 EL 기본 객체

다음은 JSP에서 기본 제공하는 EL 객체이다(그림 4).

그림 4 (EL 기본 객체)

본격적으로 EL을 사용하기에 앞서 몇 가지 기본 문법을 배워 본다.

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글

54. EL 사용하기 (3)  (0) 2022.06.26
53. EL 사용하기 (2)  (0) 2022.06.25
51. JSP 액션 태그의 사용 (2)  (0) 2022.06.22
50. JSP 액션 태그의 사용 (1)  (0) 2022.06.21
49. 데이터 보관소 (5)  (0) 2022.06.20

댓글