EL :: 연산

김병철·2022년 11월 22일
0

EL

목록 보기
2/2

EL 연산

연산을 위한 서블렛 데이터 준비

big, small은 숫자 연산과 숫자 대소비교에서 사용하며

sOne, sTwo는 String 동등 비교에서 사용한다.

pOne, pTwo는 Person클래스 비교에서 사용하며

list는 비어있는 ArrayList와 아닌 ArrayList 비교에서 사용한다.

request.setAttribute("big", 10);
request.setAttribute("small", 3);

request.setAttribute("sOne", "안녕하세요");
request.setAttribute("sTwo", new String("안녕하세요"));

request.setAttribute("pOne", new Person("차은우", 25, "남자"));
request.setAttribute("pTwo", null);

ArrayList<String> list = new ArrayList<>();
request.setAttribute("lOne", list);

ArrayList<String> list2 = new ArrayList<>();
list2.add("하나 추가 완료");
request.setAttribute("lTwo", list2);

1. 산술 연산

  • 기존 방식 :
10+3 = <%=(int)request.getAttribute("big") + (int)request.getAttribute("small") %>
  • EL 방식 :
10+3 = ${big + small}
10-3 = ${big - small}
10*3 = ${big * small}
10/3 = ${big / small}
10%3 = ${big % small}
  • 출력 :
10+3 = 13	-> 13
10-3 = 7	-> 7
10*3 = 30  -> 30
10/3 = 3.3333333333333335  -> 3.33333333333
10%3 = 1  -> 1

2. 숫자 간 대소 비교

  • 기존 방식 :
10 > 3 : <%=(int)request.getAttribute("big") > (int)request.getAttribute("small") %>
  • EL 방식 :
10 > 3 : ${big > small} 또는 ${big gt small}
10 < 3 : ${big < small} 또는 ${big lt small}
10 >= 3 : ${big >= small} 또는 ${big ge small}
10 <= 3 : ${big <= small} 또는 ${big le small}
  • 출력 :
10 > 3 : true 또는 true
10 < 3 : false 또는 false
10 >= 3 : true 또는 true
10 <= 3 : false 또는 false

3. 동등 비교 연산

  • 기존 방식 :
10과 3이 일치합니까? : <%=(int)request.getAttribute("big") == (int)request.getAttribute("small") %>
sOne과 sTwo가 일치합니까?(equal 비교) : <%=(((String)request.getAttribute("sOne")).equals((String)request.getAttribute("sTwo"))) %>
sOne과 sTwo가 일치합니까?(== 비교) : <%=(String)request.getAttribute("sOne") == (String)request.getAttribute("sTwo") %> -> 자바에서 String 으로 == 비교를 한 것과 같다.
  • EL 방식 :
10과 3이 일치합니까? : ${big == small} 또는 ${big eq small}
big에 담긴 값이 10과 일치합니까? : ${big == 10} 또는 ${big eq 10}
sOne과 sTwo가 일치합니까? : ${sOne == sTwo} 또는 ${sOne eq sTwo}
sOne과 sTwo가 일치하지 않습니까? : ${sOne != sTwo } 또는 ${sOne ne sTwo } 
<!--ne는 not equals-->
sOne에 담긴 값이 "안녕하세요"와 동일합니까? : ${sOne == "안녕하세요" } 또는 ${sOne == '안녕하세요' }
  • 출력 :
10과 3이 일치합니까? : false 또는 false
big에 담긴 값이 10과 일치합니까? : true 또는 true
sOne과 sTwo가 일치합니까? : true 또는 true
sOne과 sTwo가 일치하지 않습니까? : false 또는 false 

sOne에 담긴 값이 "안녕하세요"와 동일합니까? : true 또는 true

자바에서 String으로 == 비교를 한것과 다르다. equal비교한 것처럼 된다.

문자열에 쌍따옴표와 홑따옴표 둘 다 가능하다.

4. 객체가 null인지 또는 리스트가 비어있는지 확인

  • EL 연산 :
pOne은 비어있습니까 ? : ${pOne == null } 또는 ${empty pOne}
pTwo는 null인가요? : ${pTwo == null } 또는 ${empty pTwo}
  • 출력 :
pOne은 비어있습니까 ? : false 또는 false
pTwo는 null인가요? : true 또는 true

  • EL 연산 :
lOne은 텅 비어있나요? : ${lOne == null } 또는 ${empty lOne }
lTwo은 텅 비어있나요? : ${lTwo == null } 또는 ${empty lTwo }
  • 출력 :
lOne은 텅 비어있나요? : false 또는 true
lTwo은 텅 비어있나요? : false 또는 false

5. 논리 연산자

  • EL 연산 :
AND 연산 : ${true && false } 또는 ${true and true }
OR 연산 : ${false || true } 또는 ${false or true }
  • 출력 :
AND 연산 : false 또는 true
OR 연산 : true 또는 true

# 연습문제

  • 문제 :
- EL연산에서 배운 키워드로 진행
- big이 small보다 크고 lOne이 텅 비어있나요? : ${(big gt small) and empty lOne}
- big과 small의 곱은 4의 배수입니까? : ${((big * small)%4) == 0 }
- big과 small의 곱은 ? : ${big * small }
- lTwo가 텅 비어있지 않거나 또는 sOne에 담긴 값이 "안녕하십니까?"와 일치합니까? : ${(not empty lTwo) or (sOne == "안녕하십니까?")}
- lTwo가 텅 비어있지 않나요? : ${not empty lTwo }
- sOne에 담긴 값이 "안녕하십니까?"와 일치하나요? : ${sOne eq "안녕하십니까?" }
  • 출력 :
- EL연산에서 배운 키워드로 진행
- big이 small보다 크고 lOne이 텅 비어있나요? : true
- big과 small의 곱은 4의 배수입니까? : false
- big과 small의 곱은 ? : 30
- lTwo가 텅 비어있지 않거나 또는 sOne에 담긴 값이 "안녕하십니까?"와 일치합니까? : true
- lTwo가 텅 비어있지 않나요? : true
- sOne에 담긴 값이 "안녕하십니까?"와 일치하나요? : false
profile
keep going on~

0개의 댓글