๐Ÿค”JSTL์„ ์•Œ์•„๋ณด์ž!

์ดํžยท2024๋…„ 5์›” 23์ผ
0

๐Ÿค”๊ธฐ์ดˆ ๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
7/8

โœ”๏ธJSTL์ด๋ž€?

JSTL์ด๋ž€ (JavaServer Pages Standard Tag Library)์˜ ์•ฝ์ž๋กœ Java EE ๊ธฐ๋ฐ˜์˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์ปดํฌ๋„ŒํŠธ ๋ชจ์Œ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํƒœ๊ทธ๋ฅผ ํ‘œ์ค€ํ™”ํ•˜์—ฌ JSP๋‚ด์—์„œ JAVA์ฝ”๋“œ๋ฅผ ๋” ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

โœ”๏ธJSTL ํƒœ๊ทธ ์ข…๋ฅ˜

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์„ธ๋ถ€ ๊ธฐ๋Šฅ์ ‘๋‘์–ด๊ด€๋ จ URI
์ฝ”์–ด๋ณ€์ˆ˜ ์ง€์›, ํ๋ฆ„ ์ œ์–ด, ๋ฐ˜๋ณต๋ฌธ ์ฒ˜๋ฆฌ, URL ์ฒ˜๋ฆฌChttp://java.sun.com/jstl/core
๊ตญ์ œํ™”์ง€์—ญ, ๋ฉ”์‹œ์ง€ ํ˜•์‹, ์ˆซ์ž ๋ฐ ๋‚ ์งœ ํ˜•์‹fmthttp://java.sun.com/jsp/jstl/fmt
XMLXML ์ฝ”์–ด, ํ๋ฆ„ ์ œ์–ด, XML ๋ณ€ํ™˜xhttp://java.sun.com/jsp/jstl/xml
๋ฐ์ดํ„ฐ๋ฒ ์ด์ŠคSQLsqlhttp://java.sun.com/jsp/jstl/sql
ํ•จ์ˆ˜์ปฌ๋ ‰์…˜ ์ฒ˜๋ฆฌ, ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌfnhttp://java.sun.com/jsp/jstl/functions

1.์ฝ”์–ด(core)ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

๐Ÿ“–๋ณ€์ˆ˜ ์ง€์›

โœ๏ธ<c:set>: JSPํŽ˜์ด์ง€์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ง€์ •

<c:set var="id" value="yiheeng" scope="page"/>
<c:set var="name" value="์ดํž" scope="page"/>
.
.
<body>
${id} <br>
${name}
</body>

--> ์ถœ๋ ฅ

yiheeng
์ดํž

โœ๏ธ<c:remove>: ์ง€์ •๋œ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐ

<c:set var="id" value="yiheeng" scope="page"/>
<c:set var="name" value="์ดํž" scope="page"/>

<c:remove var="id"> <%--๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•จ--%>
.
.
<body>
${id} <br>
${name}
</body>

--> ์ถœ๋ ฅ

์ดํž

๐Ÿ“–ํ๋ฆ„์ œ์–ด

โœ๏ธ<c:if>: ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰

<c:set var="id" value="yiheeng" scope="page"/>
<c:set var="name" value="์ดํž" scope="page"/>

<c:if test="${true}">
์ฐธ์ž…๋‹ˆ๋‹ค. <br>
</c:if>
<c:if test="${11==11}">
๋‘ ๊ฐ’์€ ๊ฐ™์Šต๋‹ˆ๋‹ค.<br>
</c:if>
<c:if test="${11!=11}">
๋‘ ๊ฐ’์€ ๊ฐ™์ง€์•Š์Šต๋‹ˆ๋‹ค.<br>
</c:if>
<c:if test="${id=='yiheeng'}&&(name=='์ดํž')}">
์•„์ด๋””๋Š” ${id}๊ณ , ์ด๋ฆ„์€ ${name}์ž…๋‹ˆ๋‹ค.
</c:if>

--> ์ถœ๋ ฅ

์ฐธ์ž…๋‹ˆ๋‹ค.
๋‘ ๊ฐ’์€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์•„์ด๋””๋Š” yiheeng๊ณ , ์ด๋ฆ„์€ ์ดํž์ž…๋‹ˆ๋‹ค.

โœ๏ธ<c:choose>: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰
-- <c:when>: <c:choose> ๋‚ด์—์„œ ๊ฐ ์กฐ๊ฑด์— ๋Œ€ํ•ด ์‹คํ–‰ํ•  ์ฝ”๋“œ ๋ธ”๋ก์„ ์ง€์ •
-- <c:otherwise>: <c:choose> ๋‚ด์—์„œ ๋ชจ๋“  ์กฐ๊ฑด์ด ๊ฑฐ์ง“์ผ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ ๋ธ”๋ก์„ ์ง€์ •

<c:set var="id" value="yiheeng" scope="page"/>
<c:choose>
	<c:when test='${empty id}'> <%--id๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ--%>
    ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
    </c:when>
    <c:otherwise>
    ์•„์ด๋””๋Š” ${id}์ž…๋‹ˆ๋‹ค.
    </c:otherwise>
</c:choose>

--> ์ถœ๋ ฅ(์•„์ด๋””๊ฐ€๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ)

์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.

--> ์ถœ๋ ฅ(์•„์ด๋””๊ฐ€๋น„์–ด์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ)

์•„์ด๋””๋Š” yiheeng์ž…๋‹ˆ๋‹ค.

โœ๏ธ<c:forEach>: ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰

<c:forEach var="๋ณ€์ˆ˜๋ช…" items="๋ฐ˜๋ณตํ• ๊ฐ์ฒด์ด๋ฆ„" begin="์‹œ์ž‘๊ฐ’" end="๋งˆ์ง€๋ง‰๊ฐ’"
step="์ฆ๊ฐ€๊ฐ’" varStatus="๋ฐ˜๋ณต์ƒํƒœ๋ณ€์ˆ˜์ด๋ฆ„>

๊ตฌ๊ตฌ๋‹จ 2๋‹จ
<c:forEach var="i" begin="1" end="10" step="1">
2*${i} = ${2*i} <br>
</c:forEach>
<br>
<c:set var="fruits" value="์‚ฌ๊ณผ,๋ฐ”๋‚˜๋‚˜,์ฒญํฌ๋„,๋”ธ๊ธฐ"/>
<c:forEach var="fruit" items="${fruits}" delims=","> <%--๊ตฌ๋ถ„์ž ,๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ--%>
${token}
</c:forEach>

--> ์ถœ๋ ฅ

๊ตฌ๊ตฌ๋‹จ 2๋‹จ 
2*1 = 2
2*2 = 4
2*3 = 6
2*4 = 8
2*5 = 10
2*6 = 12
2*7 = 14
2*8 = 16
2*9 = 18

์‚ฌ๊ณผ,๋ฐ”๋‚˜๋‚˜,์ฒญํฌ๋„,๋”ธ๊ธฐ

โœ๏ธ<c:forTokens>: ๊ตฌ๋ถ„์ž๋กœ ๋ถ„๋ฆฌ๋œ ๊ฐ๊ฐ์˜ ํ† ํฐ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ

๐Ÿ“–URL ์ฒ˜๋ฆฌ

โœ๏ธ<c:import>: URL์„ ์ด์šฉํ•˜์—ฌ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค(ํŽ˜์ด์ง€, ํŒŒ์ผ ๋“ฑ)๋ฅผ jsp ํŽ˜์ด์ง€์— ์ถ”๊ฐ€
โœ๏ธ<c:redirect>: ์ง€์ •๋œ URL๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ (response.sendRedirect()๊ธฐ๋Šฅ ์ˆ˜ํ–‰)
ํ•ด๋‹น jsp๋กœ ์š”์ฒญํ•˜๋ฉด ๋ฐ”๋กœ redirect์„ค์ •๋œ ๊ฒฝ๋กœ๋กœ ๊ฐ€๊ฒŒ๋จ.

<c:redirect url="/test/member.jsp">
	<c:param name="id" value="yiheeng" />
    <%--์ด๋™ํ•  ํŽ˜์ด์ง€๋กœ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •--%>
</c:redirect>

โœ๏ธ<c:url>: ์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ๋ถ€ํ„ฐ URL์„ ์ƒ์„ฑ

<c:url var="๋ณ€์ˆ˜์ด๋ฆ„" value="URL๊ฒฝ๋กœ" [scope="scope์†์„ฑ ์ค‘ ํ•˜๋‚˜"]>
	<c:param name="๋งค๊ฐœ๋ณ€์ˆ˜์ด๋ฆ„" value="์ „๋‹ฌ๊ฐ’" />
</c:url>
<c:url var="url1" value="/test/member.jsp">
	<c:param name="id" value="yiheeng" />
    <%--์ด๋™ํ•  ํŽ˜์ด์ง€๋กœ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •--%>
</c:url>
.
.
.
<a href='${url1}'>ํšŒ์›์•„์ด๋””์ถœ๋ ฅ</a>

๐Ÿ“–๊ธฐํƒ€ ํƒœ๊ทธ

โœ๏ธ<c:out>: ๋ณ€์ˆ˜๋‚˜ ํ‘œํ˜„์‹์˜ ๊ฐ’์„ ์ถœ๋ ฅ
<c:out value="์ถœ๋ ฅ๊ฐ’" default="๊ธฐ๋ณธ๊ฐ’" [escapeXml="boolean๊ฐ’"] />
โœ๏ธ<c:catch>: ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌ
โœ๏ธ<c:param>: ๋‹ค๋ฅธ ํƒœ๊ทธ๋กœ ์ „๋‹ฌํ•  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜

2. ํฌ๋งคํŒ… ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

  • <fmt:formatDate>: ๋‚ ์งœ ํ˜•์‹์„ ์ง€์ •ํ•˜์—ฌ ๋‚ ์งœ๋ฅผ ํฌ๋งท
  • <fmt:formatNumber>: ์ˆซ์ž ํ˜•์‹์„ ์ง€์ •ํ•˜์—ฌ ์ˆซ์ž๋ฅผ ํฌ๋งท
  • <fmt:parseNumber>: ์ˆซ์ž๋ฅผ ํŒŒ์‹ฑ
  • <fmt:formatMessage>: ๋ฉ”์‹œ์ง€๋ฅผ ํ˜•์‹ํ™”
  • <fmt:setLocale>: ๋กœ์ผ€์ผ์„ ์„ค์ •
  • <fmt:setBundle>, <fmt:setParam>, <fmt:requestEnconding>, <fmt:timeZone>, <fmt:setTimeZone>, <fmt:formatNumber>, <fmt:formatDate> ๋“ฑ

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํƒœ๊ทธ(SQL Tags)

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

  • <sql:setDataSource>: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ์„ค์ •
  • <sql:transaction>: SQL ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ  ์ข…๋ฃŒ
  • <sql:update>: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” SQL ๋ฌธ์„ ์‹คํ–‰
  • <sql:query>: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ
  • <sql:param>: SQL ๋ฌธ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

4. ํ•จ์ˆ˜ ํƒœ๊ทธ(Function Tags)

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

  • <fn:toUpperCase>: ๋ฌธ์ž์—ด์„ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
  • <fn:toLowerCase>: ๋ฌธ์ž์—ด์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
  • <fn:length>: ๋ฌธ์ž์—ด์ด๋‚˜ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜
  • <fn:substring>: ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ถ„์„ ์ถ”์ถœ
  • <fn:indexOf>: ๋ฌธ์ž์—ด ๋‚ด์—์„œ ์ง€์ •๋œ ๋ฌธ์ž์—ด์˜ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค
  • <fn:replace>: ๋ฌธ์ž์—ด ๋‚ด์—์„œ ์ง€์ •๋œ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋Œ€์ฒด
profile
๋ฉ๋ฐœ์ž์—์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋Š” ๊ธธ

0๊ฐœ์˜ ๋Œ“๊ธ€