** ๐Ÿ“ŒEL ์—ฐ์‚ฐ์ž ์ข…๋ฅ˜ ๋ฐ ์‹ค์ „ ์‚ฌ์šฉ๋ฒ• (์‚ฐ์ˆ , ๋น„๊ต, ๋…ผ๋ฆฌ, empty ๋“ฑ) **


โœ… ๋ชฉ์ฐจ

  1. EL์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์ž
  2. ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž
  3. ๋น„๊ต ์—ฐ์‚ฐ์ž
  4. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž
  5. ์กฐ๊ฑด ์—ฐ์‚ฐ์ž (์‚ผํ•ญ ์—ฐ์‚ฐ์ž)
  6. empty ์—ฐ์‚ฐ์ž
  7. ์‹ค์ „ ํ™œ์šฉ ์˜ˆ์ œ ๋ชจ์Œ
  8. ๊ธฐ์ˆ ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ์š”์•ฝ
  9. ์š”์•ฝ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

1๏ธโƒฃ EL์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์ž ์ด์ •๋ฆฌ

๋ถ„๋ฅ˜ ์—ฐ์‚ฐ์ž ์„ค๋ช…
์‚ฐ์ˆ  +, -, *, /, % ๊ธฐ๋ณธ ์‚ฐ์ˆ  ๊ณ„์‚ฐ
๋น„๊ต ==, !=, <, >, <=, >=, eq, ne, lt, gt, le, ge ๋น„๊ต ์—ฐ์‚ฐ (๋ฌธ์žํ˜•, ์ˆซ์žํ˜• ์ž๋™ ํ˜•๋ณ€ํ™˜)
๋…ผ๋ฆฌ &&, ` ย 
์กฐ๊ฑด condition ? A : B ์‚ผํ•ญ ์—ฐ์‚ฐ์ž
ํŠน์ˆ˜ empty ๊ฐ’์ด null์ด๊ฑฐ๋‚˜ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ

๐Ÿ“Œ ๐Ÿ”„ ==์™€ eq, !=๊ณผ ne๋Š” ๊ฐ™์€ ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. eq, ne๋Š” XML ํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, EL์—์„œ๋„ ๋ชจ๋‘ ์ง€์›๋ฉ๋‹ˆ๋‹ค.


2๏ธโƒฃ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

<% request.setAttribute("x", 10); %>
<% request.setAttribute("y", 3); %>

<p>๋ง์…ˆ: ${x + y}</p>       <!-- 13 -->
<p>๊ณฑ์…ˆ: ${x * y}</p>       <!-- 30 -->
<p>๋‚˜๋ˆ—์…ˆ: ${x / y}</p>     <!-- 3 -->
<p>๋‚˜๋จธ์ง€: ${x % y}</p>     <!-- 1 -->

3๏ธโƒฃ ๋น„๊ต ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž ์˜๋ฏธ ์˜ˆ์‹œ
==, eq ๊ฐ™๋‹ค ${x == y}, ${x eq y}
!=, ne ๊ฐ™์ง€ ์•Š๋‹ค ${x != y}, ${x ne y}
<, lt ์ž‘๋‹ค ${x < y}, ${x lt y}
>, gt ํฌ๋‹ค ${x > y}, ${x gt y}
<=, le ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค ${x <= y}, ${x le y}
>=, ge ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค ${x >= y}, ${x ge y}

๐Ÿ’ก eq, ne, lt, gt, le, ge๋Š” XML ์†์„ฑ ์•ˆ์—์„œ ๊ธฐํ˜ธ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ์ •์ ์ž…๋‹ˆ๋‹ค.


4๏ธโƒฃ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

<% request.setAttribute("isAdmin", true); %>
<% request.setAttribute("isActive", false); %>

<p>${isAdmin && isActive}</p>   <!-- false -->
<p>${isAdmin || isActive}</p>   <!-- true -->
<p>${!isActive}</p>             <!-- true -->

โœ… ํ…์ŠคํŠธ ๋ฐฉ์‹ (and, or, not)๋„ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™:

<p>${isAdmin and isActive}</p>

5๏ธโƒฃ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž (์‚ผํ•ญ ์—ฐ์‚ฐ์ž)

<% request.setAttribute("score", 80); %>

<p>ํ•ฉ๊ฒฉ ์—ฌ๋ถ€: ${score >= 60 ? "ํ•ฉ๊ฒฉ" : "๋ถˆํ•ฉ๊ฒฉ"}</p>

๐Ÿง  ์ฃผ์˜: JSP ํŽ˜์ด์ง€ ๋ฒ„์ „์ด ๋‚ฎ์œผ๋ฉด ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ 2.0 ์ด์ƒ ํ™•์ธ ํ•„์š”.


6๏ธโƒฃ empty ์—ฐ์‚ฐ์ž

โœ… null, ๋นˆ ๋ฌธ์ž์—ด(โ€œโ€), ๋นˆ ๋ฐฐ์—ด, ๋นˆ ์ปฌ๋ ‰์…˜ ๋“ฑ์„ ์ฒดํฌํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

<% request.setAttribute("userId", ""); %>

<p>์•„์ด๋”” ์ž…๋ ฅ๋จ? ${empty userId ? "โŒ ์—†์Œ" : "โœ… ์žˆ์Œ"}</p>
ํ‘œํ˜„ ์„ค๋ช…
empty param.name ํŒŒ๋ผ๋ฏธํ„ฐ name์ด ์—†๊ฑฐ๋‚˜ ๋นˆ ๊ฐ’์ธ์ง€ ํ™•์ธ
empty list ๋ฆฌ์ŠคํŠธ๊ฐ€ null ๋˜๋Š” size=0์ธ์ง€ ํ™•์ธ

7๏ธโƒฃ ์‹ค์ „ ํ™œ์šฉ ์˜ˆ์ œ ๋ชจ์Œ

๐Ÿ”ธ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๋กœ๊ทธ์ธ ๋ถ„๊ธฐ

<c:if test="${empty sessionScope.user}">
  <p>๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.</p>
</c:if>
<c:if test="${not empty sessionScope.user}">
  <p>ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค, ${sessionScope.user.name}๋‹˜!</p>
</c:if>

๐Ÿ”ธ ๋ฐ˜๋ณต๋ฌธ ๋‚ด ์ง์ˆ˜/ํ™€์ˆ˜ ๊ตฌ๋ถ„

<c:forEach var="i" begin="1" end="5">
  <p>${i}๋Š” ${i % 2 == 0 ? "์ง์ˆ˜" : "ํ™€์ˆ˜"}</p>
</c:forEach>

๐Ÿ”ธ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋น„์—ˆ๋Š”์ง€ ์ฒดํฌ

<c:choose>
  <c:when test="${empty cart}">
    <p>๐Ÿ›’ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.</p>
  </c:when>
  <c:otherwise>
    <p>๐Ÿ›’ ${cart.size()}๊ฐœ์˜ ์ƒํ’ˆ์ด ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
  </c:otherwise>
</c:choose>

8๏ธโƒฃ ๊ธฐ์ˆ ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ์š”์•ฝ

์งˆ๋ฌธ ๋‹ต๋ณ€ ์š”์•ฝ
โ“ EL์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์ž๋Š”? ์‚ฐ์ˆ , ๋น„๊ต, ๋…ผ๋ฆฌ, ์‚ผํ•ญ, empty ๋“ฑ์ด ์žˆ์œผ๋ฉฐ ๋Œ€๋ถ€๋ถ„ ์ž๋ฐ”์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋ฌธ๋ฒ•์€ ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
โ“ empty์˜ ์šฉ๋„๋Š”? null ๋˜๋Š” ๋น„์–ด์žˆ๋Š” ๊ฐ’์„ ๊ฒ€์‚ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋งค์šฐ ์ž์ฃผ ์“ฐ์ž…๋‹ˆ๋‹ค.
โ“ eq์™€ ==์˜ ์ฐจ์ด์ ์€? ๊ธฐ๋Šฅ์€ ๊ฐ™์ง€๋งŒ eq๋Š” XML ์†์„ฑ์—์„œ๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์—ฌ JSTL์—์„œ ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค.
โ“ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ๋ฒ•? ${์กฐ๊ฑด ? ๊ฐ’1 : ๊ฐ’2} ํ˜•ํƒœ์ด๋ฉฐ JSP 2.0 ์ด์ƒ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
โ“ EL์—์„œ ์—ฐ์‚ฐ์ž ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ๋Š”? ํ‘œํ˜„์‹์ด null์ผ ๊ฒฝ์šฐ ์‚ฐ์ˆ  ์—ฐ์‚ฐ ์‹œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ โ†’ JSTL <c:if>์™€ ๋ณ‘ํ–‰ ์‚ฌ์šฉ ๊ถŒ์žฅ

9๏ธโƒฃ ์š”์•ฝ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

EL์€ ์ž๋ฐ”์—์„œ ์“ฐ๋˜ ์—ฐ์‚ฐ์ž๋“ค์„ ๊ฐ„๊ฒฐํ•˜๊ณ  ํ‘œํ˜„ ์ค‘์‹ฌ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ด์ค๋‹ˆ๋‹ค.

empty, ==, &&, ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ๋“ฑ์€ ์‹ค๋ฌด์™€ ๊ธฐ์ˆ ๋ฉด์ ‘ ๋ชจ๋‘์—์„œ ๋งค์šฐ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค.