** ๐JSTL functions (fn:) ํจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ์ ๋ณต**
๋ฌธ์์ด ๊ธธ์ด, ํฌํจ ์ฌ๋ถ, ์๋ผ๋ด๊ธฐ, ์นํ, ๋ฆฌ์คํธ ๋ณํ ๋ฑ ์ค๋ฌด ํต์ฌ ๊ธฐ๋ฅ
โ ๋ชฉ์ฐจ
- JSTL ํจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋?
- JSTL ํจ์ ์ ์ธ ๋ฐฉ๋ฒ
- ์ฃผ์
fn:
ํจ์ ์ ๋ฆฌ - ์ค์ ํ์ฉ ์์
- ๊ธฐ์ ๋ฉด์ ๋๋น ์ง๋ฌธ
- ์์ฝ ๋ฐ ๋ง๋ฌด๋ฆฌ
1๏ธโฃ JSTL ํจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋?
๐ JSTL์์ ๋ฌธ์์ด์ด๋ ๋ฆฌ์คํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ ๊ณตํ๋ ๋ด์ฅ ํจ์ ๋ชจ์์ ๋๋ค.
๐ก JSP๋ ์๋ฐ ์ฝ๋ ์์ด ํํ๋ง ํด์ผ ํ๋ฏ๋ก,
๋ฌธ์์ด ์ฒ๋ฆฌ๋ <% %>
์์ด fn:
ํจ์๋ฅผ ์ฌ์ฉํด ์ฒ๋ฆฌํฉ๋๋ค.
2๏ธโฃ JSTL ํจ์ ์ ์ธ ๋ฐฉ๋ฒ
JSP ์๋จ์ ์๋ taglib
์ ์ธ์ด ํ์ํฉ๋๋ค:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
๊ทธ ํ ${fn:ํจ์๋ช
(๊ฐ)}
ํ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
3๏ธโฃ ์ฃผ์ fn:
ํจ์ ์ ๋ฆฌ
ํจ์๋ช | ์ค๋ช | ์์ |
---|---|---|
fn:length() |
๋ฌธ์์ด/๋ฆฌ์คํธ ๊ธธ์ด | ${fn:length(name)} |
fn:contains(str, keyword) |
ํน์ ๋ฌธ์์ด ํฌํจ ์ฌ๋ถ | ${fn:contains(title, "๊ณต์ง")} |
fn:startsWith(str, "prefix") |
ํน์ ์์ ๋ฌธ์์ด ๊ฒ์ฌ | ${fn:startsWith(id, "admin")} |
fn:endsWith(str, "suffix") |
ํน์ ๋ ๋ฌธ์์ด ๊ฒ์ฌ | ${fn:endsWith(filename, ".jpg")} |
fn:indexOf(str, "word") |
์์น ๋ฐํ (์์ผ๋ฉด -1) | ${fn:indexOf(email, "@")} |
fn:substring(str, start, end) |
๋ถ๋ถ ๋ฌธ์์ด ์ถ์ถ | ${fn:substring(name, 0, 2)} |
fn:replace(str, "a", "b") |
๋ฌธ์์ด ์นํ | ${fn:replace(str, "a", "*")} |
fn:toLowerCase(str) |
์๋ฌธ์๋ก | ${fn:toLowerCase(name)} |
fn:toUpperCase(str) |
๋๋ฌธ์๋ก | ${fn:toUpperCase(name)} |
fn:split(str, delimiter) |
๊ตฌ๋ถ์๋ก ๋๋ ๋ฐฐ์ด๋ก ๋ฐํ | ${fn:split(tags, ",")} |
fn:join(array, delimiter) |
๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ณํฉ | ${fn:join(hobbyList, ", ")} |
4๏ธโฃ ์ค์ ํ์ฉ ์์
๐ธ ์์ 1: ์ด๋ฆ์ด 2๊ธ์ ์ดํ์ธ์ง ์ฒดํฌ
<c:if test="${fn:length(user.name) <= 2}">
<p>์ด๋ฆ์ด ๋๋ฌด ์งง์ต๋๋ค.</p>
</c:if>
๐ธ ์์ 2: ๊ธ ์ ๋ชฉ์ โ๊ณต์งโ ํฌํจ ์ฌ๋ถ ์ฒดํฌ
<c:if test="${fn:contains(post.title, '๊ณต์ง')}">
<strong>[๊ณต์ง]</strong>
</c:if>
๐ธ ์์ 3: ์ด๋ฏธ์ง ํ์ผ ํ์ฅ์ ๊ฒ์ฌ
<c:if test="${fn:endsWith(fileName, '.png')}">
<img src="${fileName}" />
</c:if>
๐ธ ์์ 4: ํ๊ทธ ๋ฌธ์์ด โ ๋ฆฌ์คํธ ๋ณํ ํ ๋ฐ๋ณต ์ถ๋ ฅ
<%-- tags = "java,jsp,jstl" --%>
<c:forEach var="tag" items="${fn:split(tags, ',')}">
<span>#${tag}</span>
</c:forEach>
๐ธ ์์ 5: ์๋ฌธ์ ์ด๋ฉ์ผ ์ถ๋ ฅ
<p>์ด๋ฉ์ผ: ${fn:toLowerCase(user.email)}</p>
5๏ธโฃ ๊ธฐ์ ๋ฉด์ ๋๋น ์ง๋ฌธ ์ ๋ฆฌ
์ง๋ฌธ | ์์ ๋ต๋ณ ์์ฝ |
---|---|
โ JSTL์์ ๋ฌธ์์ด ํจ์๋ ์ด๋ป๊ฒ ์ฐ๋์? | fn: ํจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ธํ๊ณ ${fn:ํจ์๋ช
(...)} ํ์์ผ๋ก ์ฌ์ฉํฉ๋๋ค. |
โ fn:contains์ c:if๋ ์ด๋ป๊ฒ ์กฐํฉํ๋์? | ๋ฌธ์์ด ํฌํจ ์ฌ๋ถ๋ฅผ ์กฐ๊ฑด์ผ๋ก ๋ถ๊ธฐํ ๋ c:if test="${fn:contains(str, 'word')}" ํํ๋ก ์ฌ์ฉํฉ๋๋ค. |
โ fn:split์ ์ด๋ค ํ์ ์ ๋ฐํํ๋์? | ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋๋ ์ฃผ๋ฉฐ, ์ด๋ฅผ c:forEach ๋ก ๋ฐ๋ณตํ ์ ์์ต๋๋ค. |
โ ์๋ฐ์ equalsIgnoreCase๋ JSTL์์ ์ด๋ป๊ฒ ํ๋์? | fn:toLowerCase(str1) == fn:toLowerCase(str2) ํํ๋ก ๊ตฌํ ๊ฐ๋ฅํฉ๋๋ค. |
6๏ธโฃ ์์ฝ ๋ฐ ๋ง๋ฌด๋ฆฌ
๐ JSTL ํจ์(fn:)๋ JSP์์ ๋ฌธ์์ด, ๋ฐฐ์ด, ๋ฆฌ์คํธ๋ฅผ ์ฒ๋ฆฌํ ๋ ๊ผญ ํ์ํ ๋๊ตฌ์ ๋๋ค.
ํนํ
fn:length
,fn:contains
,fn:split
๋ฑ์ ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ๊ณผ ์กฐํฉํ๋ฉด ์ค๋ฌด์์ ์์ฃผ ์ฐ์ ๋๋ค.
- ๋ฌธ์์ด ๊ธธ์ด, ํฌํจ, ์์/๋, ์นํ, ๋๋๊ธฐ ๋ฑ ๋๋ถ๋ถ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ
- ์๋ฐ ์ฝ๋ ์์ด ํํ ๊ฐ๋ฅ โ View ์์ญ ์ญํ ์ถฉ์ค
- ๊ธฐ์ ๋ฉด์ ์์ JSTL ๋ฌธ์์ด ์ฒ๋ฆฌ ๋ฐฉ์ ๋น๊ต ๋ฌธ์ ๋ก๋ ์์ฃผ ๋ฑ์ฅ