JSP

[JSP]Expression Language(EL : 표현언어)

MoZZANG 2022. 5. 6. 17:50
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