Expression Language(EL)이란?
EL은 쉽게 말해 출력하기 위한 언어이다.
- 값을 표현하는데 사용되는 스크립트 언어로 JSP의 기본 문법을 보완하는 역할을 한다.
- 표현식을 사용하는 것보다 간단한 방법으로 값을 출력 할 수 있다.
- 자바 코드를 사용해야 모든 곳(HTML, CSS안에서 등)에서 사용가능하다.(스크립틀렛 안에서는 사용 불가능)
- EL은 null값을 갖는 변수에 대해 좀 더 관대하고 데이터형 변환을 조금 더 자동으로 해준다.
- 즉, 값이 존재하지 않을 경우 에러를 발생시키지 않고 아무값도 출력하지 않는다.(NullPointerException에러 안남)
- 객체(자바)의 값에 접근할 때 좁은의미의 자바빈 객체의 property규칙을 따라 접근한다.
표현언어의 기능
- JSP의 네가지 기본 객체가 제공하는 영역의 속성을 사용한다.
- 변수와 연산자를 포함한다.
- 자바 클래스 메서드 호출 가능하다.
- 표현언어만의 객체 제공해준다.
표현언어의 구문
- JSP 스크립트(스크립트릿,표현식,선언부)에서는 사용이 불가능하다.
- Action tag나 JSTL등의 속성의 값으로 사용할 수 있다.
- 즉, jsp스크립트안에서만 사용못하고 모든 태그류에서는 사용할 수 있다.
EL의 데이터 타입
- 불리언 타입 : true, false
- 정수타입 : 0~9로 이루어진 정수값
- 실수타입 : 0~9로 이루어져 있고, 소숫점 및 지수 표현 가능
- 문자열 타입 : ' 또는 "로 표현
- 널타입 : null
EL연산자
- 산술 연산자 : +,-,*,/,%,div(/랑같다),mod(%랑 같다)
- 비교 연산자 : ==(eq),!=(ne),<(lt),>(gt),<=(le),>=(ge)
- 논리연산자 : &&(and),||(or),!(not)
- **empty연산자 : 개체가 비어 있는지 검사**
EL에서 객체의 접근
- 점(.) 이나 대괄호([])를 사용해서 접근한다. []는 배열에서 값을 꺼내올때 주로사용.
<!-- EL에서 null이 연산에 참여시 0으로 처리된다 -->
<ul class="list-unstyled">
<li>\${null +10} : ${null +10}</li> <!--10-->
<li>\${null *10} : ${null *10}</li> <!--0-->
<li>param 내장객체 : ${param }</li>
<li>\${param.myparam+10 } : ${param.myparam+10 }</li>
<li>\${param['myparam']+10 } : ${param["myparam"]+10 }</li>
<% String varInScriptlet="스크립틀릿에서 선언한 변수"; %>
<!-- EL 표현식 \${}에서는 JSP의 스크립팅 요소에서 선언한
변수를 직접 사용 못한다.값이 출력 안됨. -->
<!-- null로 처리됨 -->
<!-- 고로 EL식에서 사용할 변수는 JSTL을 이용해서 선언해야 한다. -->
<li>\${varInScriptlet } : ${varInScriptlet }</li>
<li>\${varInScriptlet==null } : ${varInScriptlet==null }</li>
</ul>
▲param은 getParameter()와 같은 기능이다. URL에 queryString으로 myparam에 값을 넘기면 아래와 같은 결과가 나온다.
EL식에서 사용할 변수는 JSTL을 이용해서 선언해야 한다.
JSTL을 사용하기 위해서는 taglib을 해주어야 한다.
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h4>JSTL로 EL에서 사용할 변수 선언</h4>
<c:set var="varInScriptlet" value="<%=varInScriptlet %>"/>
\${varInScriptlet } : ${varInScriptlet }
<h4>EL변수에 값 할당불가</h4>
<!-- 톰캣8.0부터는 할당가능(비 권장): el-api.jar변경됨-->
<c:set var="fnum" value="9"/>
<c:set var="snum" value="5"/>
\${fnum=100 }: ${fnum=100 }
<h4>EL의 산술 연산자</h4>
<ul class="list-unstyled">
<li>${fnum + snum }</li>
<li>${fnum - snum }</li>
<li>${fnum * snum }</li>
<li>${fnum / snum }</li>
<li>${fnum div snum }</li>
<li>${fnum % snum }</li>
<li>${fnum mod snum }</li>
<!-- EL에서는 숫자형식의 문자열을 자동으로 숫자로 형변환 -->
<li>${'100' + 100 }</li>
<li>\${'HELLO' + " EL!!" }</li>
</ul>
<h4>EL의 비교 연산자</h4>
<c:set var="fnum" value="100"/>
<c:set var="snum" value="9"/>
<ul class="list-unstyled">
<li>\${fnum > snum } : ${fnum > snum }</li>
<!-- 문자열 비교(하나씩 코드값으로 비교) -->
<li>\${"100" > "9" } : ${"100" > "9" }</li>
<!-- 문자열 "100"이 숫자 100으로 자동변환된다 -->
<li>\${"100" > 9 } : ${"100" > 9 }</li>
<li>\${100 > 9 } : ${100 > 9 }</li>
<li>\${"JSP" > 'JSP' } : ${"JSP" > 'JSP' }</li>
<li>\${"JSP" == 'JSP' } : ${"JSP" == 'JSP' }</li>
<li>\${"JSP" eq 'JSP' } : ${"JSP" eq 'JSP' }</li>
<li>\${"JSP" != 'JSP' } : ${"JSP" != 'JSP' }</li>
<li>\${"JSP" ne 'JSP' } : ${"JSP" ne 'JSP' }</li>
</ul>
<h4>EL의 삼항 연산자</h4>
\${10 gt 9 ?"10은 9보다 크다" :'10은 9보다 크지 않다' } : ${10 gt 9 ?"10은 9보다 크다" :'10은 9보다 크지 않다' }
<h4>EL의 empty 연산자</h4>
<!-- null, "", 배열인 경우 길이가 0이거나, 컬렉션인 경우 size가 0인경우 true반환 아니면 false -->
<%
String nullString=null;
String emptyString="";
Integer[] zeroLength=new Integer[0];
Collection zeroSize = new Vector();
%>
<c:set var="nullString" value="<%=nullString %>"/>
<c:set var="emptyString" value="<%=emptyString %>"/>
<c:set var="zeroLength" value="<%=zeroLength %>"/>
<c:set var="zeroSize" value="<%=zeroSize %>"/>
<ul class="list-unstyled">
<li>\${empty nullString } : ${empty nullString }</li>
<li>\${empty emptyString } : ${empty emptyString }</li>
<li>\${emptyString==null } : ${emptyString==null }</li>
<li>\${empty zeroLength } : ${empty zeroLength }</li>
<li>\${empty zeroSize } : ${empty zeroSize }</li>
</ul>
'JSP' 카테고리의 다른 글
[JSP] JSTL Core Tag - part.1(set,remove) (0) | 2022.05.10 |
---|---|
[JSP]EL : 내장객체 (0) | 2022.05.09 |
[JSP]Action Tag (0) | 2022.05.03 |
[JSP]session (0) | 2022.05.03 |
[JSP]Cookie로 간단한 쇼핑몰 만들기 예제 (0) | 2022.05.03 |