EL(Expression Language)
- 표현 언어
- JSP 2.0부터 jsp에 포함된 기술
- EL은 값을 표현할 때 사용되는 스크립트 언어
EL 의 기능
- 요청파라미터 값, 초기화파라미터 값의 표현
- PageContext, 요청객체, 세션객체, 애플리케이션 객체의 속성값 표현
- 요청헤더정보, 쿠키 값의 표현
- 사칙연산, 비교연산, 논리연산자, 기타 연산자제공
- 메소드 호출 기능 제공
EL의 형식
${EL표현식}
<p>${표현식}</p>
<img src="resources/images/${표현식}" />
<input type="text" name="username" value="${표현식}" />
<a href="list.hta?pageNo=${표현식}&cateNo=${표현식}">링크</a>
<div id="box-${표현식}"> ... </div>
EL 연산자
사칙연산
| 연산 | 연산자 | 사용사례 |
| 덧셈 | + | ${표현식 + 표현식} |
| 뺄셈 | - | ${표현식 - 표현식} |
| 곱셈 | * | ${표현식 * 표현식} |
| 나눗셈 | div ( /도 가능하다) | ${표현식 div 표현식} |
| 나머지 | mod ( %도 가능하다) | ${표현식 mod 표현식} |
비교연산
| 연산 | 연산자 | 사용사례 |
| 크다 | gt | ${표현식 gt 표현식} |
| 크거나 같다 | ge | ${표현식 ge 표현식} |
| 작다 | lt | ${표현식 lt 표현식} |
| 작거나 같다 | le | ${표현식 le 표현식} |
| 같다 | eq | ${표현식 eq 표현식} |
| 같지 않다 | ne | ${표현식 ne 표현식} |
논리연산
| 연산 | 연산자 | 사용사례 |
| 논리곱 | and | ${표현식 gt 10000 && 표현식 eq 'VIP'} |
| 논리합 | or | ${표현식 gt 50000 or 표현식 eq 5} |
| 논리부정 | not | ${not 표현식 eq 'VIP') |
기타연산
| 연산 | 연산자 | 사용사례 |
| 삼항연산 | ? : | ${표현식 비교연산자 비교값 ? 값1 : 값2} |
| 논리합 | or | ${empty 표현식} 혹은 ${not empty 표현식} |
empty 연산자가 true를 반환하는 경우
- 값이 null인 경우
- "" 빈문자열인 경우
- 배열이나 콜렉션의 길이가 0인 경우
- 비어있는 맵인 경우
EL의 내장객체
EL은 JSP의 요청파라미터, 속성, 스코프, 요청헤더정보, 초기화파라미터 정보에 접근할 수 있도록 해당 값을 제공하는 내장 객체를 가지고 있다
| 내장객체 | 사용예 | 설명 |
| param | ${param.파라미터명} | 요청파라미터값을 조회할 수 있다 request.getParameter("파라미터명")와 동일하다 |
| paramValues | ${paramValues.파라미터명} | 요청파라미터값을 조회할 수 있다 request.getParameterValues("파라미터명")와 동일하다 |
| pageScope | ${pageScope.속성명} | PageContext에 저장된 속성(값, 객체)을 조회한다 |
| requestScope | ${requestScope.속성명} | HttpServletRequest에 저장된 속성을 조회한다 |
| sessionScope | ${sessionScope.속성명} | HttpSession에 저장된 속성을 조회한다 |
| applicationScope | ${applicationScope.속성명} | ServletContext에 저장된 속성을 조회한다 |
| initParam | ${initParam.초기화파라미터명} | 초기화파라미터값을 조회한다 |
| header | ${header.요청헤더명} | 요청헤더정보에서 헤더명에 해당하는 값을 조회한다 |
| cookie | ${cookie.쿠키명} | 쿠키명에 해당하는 쿠키값을 조회한다 |
| pageContext | ${pageContext.getter메소드이름} | PageContext의 getXXX( ) 메소드의 실행결과를 조회한다 JSP의 기본객체를 제공받을 수 있다 |
주의사항
- pageScope, requestScope, sessionScope, applicationScope를 직접 명시해서 속성을 조회하지 말자
- EL은 ${속성명}으로 표기하면 page, request, session, application의 순서로 해당 속성명으로 저장된 값이 있는지를 탐색
- 속성을 저장할 떄 동일한 이름으로 다른 Scope에 저장하지만 않으면, 조회할 때 Scope를 앞에 적을 필요가 없다


'Web' 카테고리의 다른 글
| 타임리프 (0) | 2024.03.21 |
|---|---|
| JSTL(JSP Standard Tag Library) (0) | 2024.02.21 |
| 프로젝트에서 톰캣설정 (0) | 2024.01.26 |
| JDBC 프로젝트 개발순서 (0) | 2024.01.26 |
| Web_Servlet (0) | 2024.01.15 |