EL

5.EL에서의 논리연산자와 비교연산자

Jungsoomin :) 2020. 7. 14. 14:47

EL은 프로그래밍 언어와 친숙하지않은 사람을 위한 언어라고한다.

 

자바의 && 연산자는 EL에서 && and 둘 다 허용된다.

 

자바의 || 연산자는 EL에서 || or 둘 다 허용된다.

 

자바의 ! 연산자는 EL에서 ! not 둘 다 허용된다.

 

표현식의 프로퍼티가 하나라도 숫자 타입이라면 산술연산시 숫자로 변환하여 계산한다.

 

둘다 String 타입이라면 글자 순번으로 비교하는 듯

<body>
	<h1>비교 연산자</h1>
	<form action="" method="post">
	num1 : <input type="text" name="num1" id="" value="${param.num1}" /> <br />
	num2: <input type="text" name="num2" id=""  value="${param.num2 }"/> <br />
	<input type="submit" value="비교" />
	</form>
	
	<h2>크다 greater than</h2>
	<h3>${param.num1 > param.num2}</h3>
	<h3>${param.num1 gt param.num2}</h3>
	<h4>\${"10" > "7" } : ${"10" >"7" }</h4><!-- 사전순으로 먼저인 글자가 크다. -->
	<h4>\${"10" + "7" } : ${"10" + "7" }</h4>
	<h4>\${"10" > 7 } : ${"10" > 7 }</h4><!-- 둘 중에 하나라도 수라면 수로 변환되어 계산한다. -->
	<h4>\${10 > "7" } : ${10 > "7" }</h4>
	
	
	<h2>작다 less than</h2>
	<h3>${param.num1 < param.num2 }</h3>
	<h3>${param.num1 lt param.num2 }</h3>
	
	<h2>크거나 같다 greater than equal</h2>
	<h3>${param.num1 >= param.num2 }</h3>
	<h3>${param.num1 ge param.num2 }</h3>
	
	<h2>작거나 같다 less than equal</h2>
	<h3>${param.num1 <= param.num2 }</h3>
	<h3>${param.num1 le paraem.num2}</h3>
	
	<h2>같다 equal</h2>
	<h3>${param.num1 == param.num2}</h3>
	<h3>${param.num1 eq param.num2}</h3>
	
	<h2>같지 않다. not equal</h2>
	<h3>${param.num1 != param.num2 }</h3>
	<h3>${param.num1 ne param.num2 }</h3>
</body>

자바에는 없는 empty 연산자이다. 객체에 값이 있는지 없는지 여부를 확인한다는데 View 단에서 값을 확인해 볼 수 있어 유용하다고 생각이 든다.

empty 연산자는 값이 없다면 true를 리턴한다.

not empty 연산자는 값이 없다면 false를 리턴한다. 

 

null 이라면 값이 없다는 뜻이고 비었다는 뜻이니 empty 연산자로 확인해보면 true가 도출되며 not empty 연산자로 확인하면 false가 도출된다.

 

null 여부를 View 단에서 확인 할 수 있다는 이야기이니 유용해보인다. String 타입도 가능하다.

<body>
	<h1>empty 연산자</h1>
	<%
	List list1 = new ArrayList();
	request.setAttribute("emptyList", list1);
	
	Integer[] integerArr = {};
	String str ="";
	
	request.setAttribute("emptyIntArr", integerArr);
	
	List list2 = new ArrayList();
	list2.add(1);
	list2.add(2);
	list2.add(null);
	request.setAttribute("pooledList", list2);
	%>
	<!-- String 도 charsequnce이니 비어있다면 비어있는 것으로 간주하는 듯 -->
	\${str} : ${empty str} <br />
	\${not empty str} : ${not empty str}
	<hr />
	
	<!-- 참조타입 배열은 비어있는지 여부가 확인이 가능하나 원시타입은 불가함 -->
	\${emptyIntArr} : ${empty emptyIntArr} <br />
	\${not empty emptyIntArr} : ${not empty pooledList}
	<hr />
	
	
	<!-- 객체가 비었는지의 여부에 따라 TRUE FALSE 도출하는 논리연산자 -->
	\${emptyList} : ${empty emptyList} <br />
	\${pooledList} : ${empty pooledList}
	<hr />
	
	<h2>not empty</h2>
	\${! emptyList} : ${! empty emptyList} <br />
	\${not empty pooledList} : ${not empty pooledList}
	<hr />
	
	<h2>empty 연산자로 null 여부 확인</h2>
		\${empty emptyList} : ${empty emptyList[3]} <br />
		<hr />
		
		<h2>not empty 연산자로 null이 아닌지 확인</h2>
		\${not empty emptyList} : ${not empty emptyList[3]} <br />
</body>

'EL' 카테고리의 다른 글

7.JSTL-forEach의 태그와 기본속성.  (0) 2020.07.15
6.JSP 에서 static 메서드 호출  (0) 2020.07.14
4.EL에서의 비교연산자  (0) 2020.07.14
3.파라미터, 헤더, 쿠키, 전역 변수  (0) 2020.07.14
2.List, Array 표현  (0) 2020.07.14