Servlet & JSP

[JSP] EL

각시탈코더 2022. 2. 19. 11:06

 

EL

 EL(Expression Language)은 콤마(.)와 대괄호([])를 사용하여 자바 빈의 프로퍼티나 맵, 리스트, 배열의 값을 보다 쉽게 꺼내주는 기술이다. JSP에서는 주로 보관소에 들어있는 값을 꺼낼 때 사용한다.

 

<%=값%>을 ${값} 형식으로 간단히 사용하기 위해 쓴다.

EL사용

 

1.EL 표기법

 EL은 ${}와 #{}를 사용하여 값을 표현한다. ${}을 '즉시 적용(immediate evaluation)'이라 부르고 #{}을 '지연 적용(deferred evaluation)'이라 부른다.  ${}은 객체 프로퍼티 값을 '꺼낼 때', #{}은 객체 프로퍼티 값을 '담을 때' 사용한다.

 

  • ${} : 즉시적용, 객체 프로퍼티 값을 꺼낼 때
  • #{} : 지연적용, 객체 프로퍼티 값을 담을 때

 

EL 표기법

 

2.리터럴 표현식

 EL 블록에서 사용할 수 있는 값은 문자열, 정수, 부동소수점, 참거짓(Boolean), 널(Null)이 가능하다.


EL 표현식

  • 문자열: ${"test"}
  • 문자열: ${'test'}
  • 정수: ${20}
  • 부동소수점: ${3.14}
  • 참거짓: ${true}
  • null: ${null}

실행결과

  • 문자열: test
  • 문자열: test
  • 정수: 20
  • 부동소수점: 3.14
  • 참거짓: true
  • null :

 

3.값 표현식

 자바 객체, 배열, List, Map로부터 값을 꺼낼 때 사용하는 EL 표현식을 알아보자.

 

3-1 배열에서 값 꺼내기

 

EL 표현식

<% // 값 준비

pageContext.setAttribute("scores", new int[] {90, 80, 70, 100});

%>

<%-- 배열에서 인덱스 2의 값 꺼내기 --%>

${scores[2]}

 

실행결과

70


3-2 List 객체에서 값 꺼내기

 

EL 표현식

<% // 값 준비

List<String> nameList = new LinkedList<String>();

nameList.add("홍길동");

nameList.add("임꺽정");

nameList.add("일지매");

pageContext.setAttribute("nameList", nameList);

%>

<%-- 리스트 객체에서 인덱스 1의 값 꺼내기 --%>

${nameList[1]}

 

실행결과

임꺽정


3-3 Map 객체에서 값 꺼내기

 

EL 표현식

<% // 값 준비

Map<String, String> map = new HashMap<String,String>();

map.put("s01", "홍길동")

map.put("s02", "임꺽정")

map.put("s03", "일지매")

pageContext.setAttribute("map", map);

%>

<%-- 맵 객체에서 키 s02로 저장된 값 꺼내기 --%>

${map.s02}

 

실행결과

임꺽정


3-4 자바 객체에서 프로퍼티 값 꺼내기

 

EL 표현식

<% // 값 준비

pageContext.setAttribute("member", new Member()

                                                .setNo(100)

                                                .setName("홍길동")

                                                .setEmail("hong@test.com"));

%>

<%-- 자바빈에서 프로퍼티 email의 값 꺼내기 --%>

${member.email}

 

실행결과

hong@test.com

 

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

다음은 JSP에서 기본 제공하는 EL 객체이다. 종류가 많기 때문에 이런 것이 있구나 이해하고 필요할 때 참조한다.

객체 설명 코드
pageContext JSP의 PageContext 객체  
servletContext ServletContext 객체 ${pageContext.servletContext.객체명}
session HttpSession 객체 ${pageContext.session.객체명}
request ServletRequest 객체 ${pageContext.request.객체명}
response ServletResponse 객체  
param 요청 매개변수의 값 조회 ${param.매개변수명}
paramValues 요청 매개변수의 값 배열 조회 ${paramValues.매개변수명}
header HTTP 헤더의 값 조회 ${header.헤더명}
headerValues HTTP 헤더의 값 배열 조회 ${headerValues.헤더명}
객체 설명 코드
cookie 쿠키 값 조회 ${cookie.쿠키명}
initParam 컨텍스트 초기화 매개변수의 값 조회 ${initParam.매개변수명}
pageScope page 보관소의 값 조회 ${pageScope.객체명}
requestScope request 보관소의 값 조회 ${requestScope.객체명}
sessionScope session 보관소의 값 조회 ${sessionScope.객체명}
applicationScope application 보관소의 값 조회 ${applicationScope.객체명}

 

5.JSP의 기본 객체

 

JSP는 몇 가지 기본 객체를 사용한다. 중요하고 자주 사용하는 객체는 굵은 색으로 표시했다.

 

기본 객체 타입 설명
request javax.servlet.http.HttpServletRequest 요청 정보가 담겨있는 객체
response javax.servlet.http.HttpServletResponse 요청에 응답을 작성할 때 사용
session javax.servlet.http.HttpSession HTTP session을 구현한 객체. 세션 정보 저장에 사용
application javax.servlet.ServletContext Web Application 전체에서 공유하는 객체
config javax.servlet.ServletConfig JSP 페이지에 대한 설정 정보가 담긴 객체
page javax.lang.Object JSP 페이지 객체 자신
pageContext javax.servlet.jsp.PageContext JSP 페이지의 context정보를 제공
out javax.servlet.jsp.JspWriter 응답에 포함될 내용을 출력할 때 사용
exception java.lang.Throwable 예외가 발생했을 때 생성되는 예외 객체

 


출처:MVC아케틱처, 마이바티스, 스프링으로 만드는 실무형 개발자 로드맵 자바 웹 개발 워크북(저자: 엄진영, 출판사:프리렉)