** ๐EL ์ฐ์ฐ์ ์ข ๋ฅ ๋ฐ ์ค์ ์ฌ์ฉ๋ฒ (์ฐ์ , ๋น๊ต, ๋ ผ๋ฆฌ, empty ๋ฑ) **
โ ๋ชฉ์ฐจ
- EL์์ ์ฌ์ฉํ ์ ์๋ ์ฐ์ฐ์
- ์ฐ์ ์ฐ์ฐ์
- ๋น๊ต ์ฐ์ฐ์
- ๋ ผ๋ฆฌ ์ฐ์ฐ์
- ์กฐ๊ฑด ์ฐ์ฐ์ (์ผํญ ์ฐ์ฐ์)
empty์ฐ์ฐ์- ์ค์ ํ์ฉ ์์ ๋ชจ์
- ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
- ์์ฝ ๋ฐ ๋ง๋ฌด๋ฆฌ
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,==,&&, ์ผํญ ์ฐ์ฐ์ ๋ฑ์ ์ค๋ฌด์ ๊ธฐ์ ๋ฉด์ ๋ชจ๋์์ ๋งค์ฐ ์์ฃผ ๋ฑ์ฅํ๋ ํต์ฌ ์์์ ๋๋ค.