expression Language | EL |
1) 기본 문법 : 표현 언어는 다음과 같이 맨 앞에 $기호를 사용하고 중괄호 (‘{’와 ‘}’) 안에 표현식을 넣어 사용한다.
${expression}
위의 expression에는 EL에서 정의한 문법에 알맞은 표현식이 들어간다. ${expression}을 평가(evaluation)한 후의 결과 값은 브라우저에 실제로 출력 된다. ${expression}을 평가한 결과가 null인 경우에는 특별한 에러 없이 브라우저로 어떠한 내용도 전달되지 않는다.
2) EL의 사용 위치 : JSP 코딩 내에서 EL이 사용될 수 있는 위치는 다음 다섯 가지 중 하나이다.
- 일반적인 텍스트 내
- 표준 HTML 태그의 속성 값 부분
- JSP 액션 태그의 속성 값 부분
- JSTL로 정의된 태그의 속성 값 부분
- 커스텀 태그로 정의된 태그의 속성 값 부분
3) 작성법
${myObj.myProperty}
${myObj["myProperty"]}
${myObj['myProperty']}
JSP의 스크립트릿에서 선언한 객체를 JSTL 및 EL에서 활용가능한 객체로 만들어 주는 방법
<%
List list = new LinkedList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
pageContext.setAttribute("list3", list); //request, session, application 기본 객체를 활용
%>
리스트3 원소 출력 2: ${list3[1]} <br/>
리스트3 원소 출력 3: ${list3[10]} <br/>
리스트3 원소 출력 4: ${list3[a]} <br/>
<c:set var="list2" value="<%= list %>" />
리스트2 원소 출력 2: ${list2[1]} <br/>
리스트2 원소 출력 3: ${list2[10]} <br/>
리스트2 원소 출력 4: ${list2[a]} <br/>
EL 산술연산자 | EL 산술연산자 |
<%@ page contentType="text/html; charset=euc-kr" %>
<% request.setCharacterEncoding("euc-kr");%>
<html>
<body>
1. 6 + 7 = ${6+7} <br/>
2. 8 x 9 = ${8*9} <br/>
3. 1 > (4/2) : ${1 > (4/2)} <br/>
4. 5==5 : ${5==5} <br/>
5. 6 gt 7 : ${6 gt 7} <br>
6. 4.0 >= 3 : ${4.0 >= 3} <br/>
8. 100.0 == 100 : ${100.0 == 100} <br/>
9. (10*10) ne 100: ${(10*10) ne 100} <br/>
10. 'a' < 'b' : ${'a' < 'b'} <br/>
11. 'hip' gt 'hit': ${'hip' gt 'hit'} <br/>
12. 3 div 4 : ${3 div 4} <br/>
13. 10 mod 4 : ${10 mod 4} <br/>
14. empty param.name: ${empty param.name} <br/> <!-- 주목 : name 파라미터가 존재유무.
</body>
</html>
EL 기본객체활용예 | EL 기본객체 |
EL 기본 객체 | 설명 | |
일반 객체 | pageContext | JSP 페이지의 Context를 대표하는 객체. JSP의 pageContext 기본 객체와 동일하다. servletContext, session, request, response 객체를 접근할 수 있는 방법을 제공한다.(EL 기본 객체 중 유일하게 Map객체가 아니다.) |
Scope 관련 기본 객체의 Attribute을 포함하는 Map 객체 | pageScope | JSP의 pageContext 기본 객체에 저장된 Attribute에 대한 <이름, 값> 매핑을 저장한 Map 객체 |
requestScope | JSP의 request 기본 객체에 저장된 Attribute에 대한 <이 름, 값> 매핑을 저장한 Map 객체 | |
sessionScope | JSP의 session기본 객체에 저장된 Attribute에 대한 <이 름, 값> 매핑을 저장한 Map 객체 | |
applicationScope | JSP의 application기본 객체에 저장된 Attribute에 대한 <이름, 값> 매핑을 저장한 Map 객체 | |
다양한 정보들을 제공하는 Map 객체 | param | JSP의 request 기본 객체가 지닌 Parameter에 대한 <이 름, 값> 매핑을 저장한 Map 객체. (값은 String 타입이다.) |
paramValues | JSP의 request 기본 객체가 지닌 Parameter에 대한 <이 름, 값 배열> 매핑을 저장한 Map 객체. (값 배열은 String[] 타입이다.) * request.getParameterMap() 이 리턴 하는 객체와 같은 객체 | |
header | JSP의 request 기본 객체가 지닌 Header에 대한 <이름, 값> 매핑을 저장한 Map 객체. (값은 String 타입이다.) | |
headerValues | JSP의 request 기본 객체가 지닌 Header에 대한 <이름, 값 배열> 매핑을 저장한 Map 객체. (값 배열은 String[] 타입이다.) | |
initParam | JSP의 application기본 객체가 지닌 초기화 Parameter에 대한 <이름, 값> 매핑을 저장한 Map 객체. | |
cookie | JSP의 request 기본 객체가 지닌 Cookie 정보에 대한 <이 름, 쿠키 객체> 매칭을 저장한 Map 객체. (매핑에서 값에 해당하는 쿠키 객체의 타입은 javax.servlet.http.Cookie)이다. |
JSP 기본 객체와 pageContext 기본 객체
JSP 기본객체 | JSP의 pageContext 기본 객체를 활용한 같은 표현 | EL의 pageContext 기본 객체를 활용한 같은 표현 | Java 클래스 (타입) |
request | pageContext.getRequest() | ${pageContext.request} | javax.servlet.http.HttpServletRequest |
response | pageContext.getResponse() | ${pageContext.response} | javax.servlet.http.HttpServletResponse |
session | pageContext.getSession() | ${pageContext.session} | javax.servlet.http.HttpSession |
application | pageContext.getServletContext() | ${pageContext.servletContext} | javax.servlet.ServletContext |
EL 기본객체활용예 | EL 기본객체활용예 |
가. session기본 객체에 저장된 Attribute인 profile의 값
${sessionScope.profile}
나. session기본 객체에 저장된 Attribute인 cart 객체의 numberOfItems 멤버 속성 값
${sessionScope.cart.numberO fItems}
다. JSP의 컨텍스트 경로 (context path)
${pageContext.request.contextPath}
라. request 기본 객체가 지닌 Parameter인 productId의 값
${param.productId} 또는 ${param["productId"]}
마. request 기본 객체가 지닌 Parameter중 여러 개의 값을 지닌 productId의 모든 값
${paramValues.productId} 또는 ${paramValues["productId"]}
바. request 기본 객체가 지닌 Parameter인 userName의 값
<html>
<head>
<title>Customer Profile for ${param["username"]}</title>
</head>
<body>
...
</body>
</html>
사. request 기본 객체가 지닌 Header인 host의 값
${header["host"]} 또는 ${header.host}
사1. request 기본 객체에 저장된 Attribute인 profile의 값
${requestScope.profile}
${profile}
아. pageContext 기본 객체에 저장된 Attribute인 pageColor의 값
<body bgcolor="${pageScope.pageColor}">
또는 <body bgcolor="${pageScope['pageColor']}">
<%@ page contentType="text/html; charset=euc-kr"%>
<html>
<head>
<title>EL 테스트</title>
</head>
<body>
<form method="get" action="el_testProcess.jsp">
이름 : <input type="text" name="name"><br/>
관심 상품:
<input type="checkbox" name="pID" value="컴퓨터" checked>컴퓨터
<input type="checkbox" name="pID" value="mP3" checked>mP3
<input type="checkbox" name="pID" value="휴대폰" checked>휴대폰<br/>
<input type="submit" value="완료">
</form>
</body>
</html>
//el_testProcess.jsp
<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="java.util.Calendar" %>
<% request.setCharacterEncoding("euc-kr");%>
<%
Calendar cal = Calendar.getInstance();
session.setAttribute("profile", "이것은 session에 저장된 profile 속성 값입니다.");
session.setAttribute("cart", cal);
pageContext.setAttribute("pageColor", "#99FFCC");
%>
<html>
<body bgcolor="${pageScope.pageColor}">
sessionScope.profile : ${sessionScope.profile}<br/>
sessionScope.cart.time : ${sessionScope.cart.time}<br/>
pageContext.request.contextPath : ${pageContext.request.contextPath}<br/>
param.name : ${param.name}<br/>
paramValues.pID[0] : ${paramValues.pID [0]}<br/>
paramValues.pID[1] : ${paramValues.pID [1]}<br/>
paramValues.pID[2] : ${paramValues.pID [2]}<br/>
${header.host}
</body>
</html>
Java Email 전송 (0) | 2014.12.19 |
---|---|
Java Excel 파일 생성 (0) | 2014.12.19 |
JSTL (0) | 2014.12.10 |
특정 url 소스 가져오기 (0) | 2014.09.02 |
java document를 chm 파일로 다운로드 (0) | 2014.06.10 |