EL
EL(Expression Language)은 콤마(.)와 대괄호([])를 사용하여 자바 빈의 프로퍼티나 맵, 리스트, 배열의 값을 보다 쉽게 꺼내주는 기술이다. JSP에서는 주로 보관소에 들어있는 값을 꺼낼 때 사용한다.
<%=값%>을 ${값} 형식으로 간단히 사용하기 위해 쓴다.
1.EL 표기법
EL은 ${}와 #{}를 사용하여 값을 표현한다. ${}을 '즉시 적용(immediate evaluation)'이라 부르고 #{}을 '지연 적용(deferred evaluation)'이라 부른다. ${}은 객체 프로퍼티 값을 '꺼낼 때', #{}은 객체 프로퍼티 값을 '담을 때' 사용한다.
- ${} : 즉시적용, 객체 프로퍼티 값을 꺼낼 때
- #{} : 지연적용, 객체 프로퍼티 값을 담을 때
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아케틱처, 마이바티스, 스프링으로 만드는 실무형 개발자 로드맵 자바 웹 개발 워크북(저자: 엄진영, 출판사:프리렉)
'Servlet & JSP' 카테고리의 다른 글
[Servlet & JSP] 서블릿과 JSP정리 (0) | 2022.12.15 |
---|---|
[JSP] JSTL (0) | 2022.02.19 |