๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ์–ธ์–ด/JSP

[JSTL] JSTL ๊ธฐ์ดˆ ์ •๋ฆฌ (๋ฌธ๋ฒ• / ์ž‘์„ฑ๋ฒ•)

by yunamom 2022. 4. 7.
๋ฐ˜์‘ํ˜•

โœจ1.  JSTL ์ด๋ž€ 

1. JSP ํ‘œ์ค€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(JSP Standard Tag Library) ์ด๋‹ค.

 

2. JSP์—์„œ (๋ฐ˜๋ณต๊ณผ ์กฐ๊ฑด, ๋ฐ์ดํƒ€ ๊ด€๋ฆฌ ํฌ๋งท, XML ์กฐ์ž‘, ๋ฐ์ดํƒ€๋ฒ ์ด์Šค ์•ก์„ธ์Šค)์„ ๊ตฌํ˜„ํ•˜๋Š” ์ปค์Šคํ…€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ์Œ์ด๋‹ค.

 

3. ์‹œ๊ฐ„, ๋‚ ์งœ, ์ˆซ์ž์˜ ํฌ๋งท์ด๋‚˜ ๋ฌธ์ž์—ด ๊ฐ€๊ณต๋“ฑ์˜ ์ฒ˜๋ฆฌ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง๊ณผ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

4. JSTL์€ EL(Expression Language)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•œ๋‹ค.

 

โœจ2. JSTL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 

 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋Šฅ   ์ ‘๋‘์–ด
 ์ฝ”์–ด  ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ณ€์ˆ˜์„ ์–ธ, ์กฐ๊ฑด/์ œ์–ด/๋ฐ˜๋ณต๋ฌธ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.  c
 ํฌ๋งทํŒ…   ์ˆซ์ž,๋‚ ์งœ,์‹œ๊ฐ„์„ ํฌ๋งทํŒ… ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๊ตญ์ œํ™”, ๋‹ค๊ตญ์–ด ์ง€์› ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.  fmt
 ํ•จ์ˆ˜  ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.   fn
 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ/์ˆ˜์ •/์‚ญ์ œ/์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.  sql
 XML์ฒ˜๋ฆฌ  XML ๋ฌธ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.  x

 

โœจ3. JSTL ๋ฌธ๋ฒ• 

 

1. Core 

 ๋ช…๋ น์–ด ๋‚ด์šฉ  ์˜ˆ์ œ
c:url url ํ˜ธ์ถœ 
<c:url value="test.jsp"/>
<c:url value="/test.jsp" context="/other"/>

c:out ๊ฐ์ฒด๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅ 
<c:out value="${data}"/>
<c:out value="${data}" default="๊ฐ’์—†์Œ"/>
c:set  ์ €์žฅ์˜์—ญ์— ๊ฐ์ฒด๋ฅผ ์ €์žฅ 
<!-- scope : page, request, session, application -->
<c:set scope="request" var="data" value="my_testValue" />
c:forEach  ๋ฐ˜๋ณต๋ฌธ ์ œ์–ด 
<c:forEach var="NOTICE" items="${NOTICE_LIS}" varStatus="status">
<c:out value="${NOTICE.COLUMN}"/>
</c:forEach>
 
<!-- 0123456 -->
<c:forEach var="S" begin="0" end="6">
<c:out value="${S}"/>
</c:forEach>
 
<!-- 036 -->
<c:forEach var="S" begin="0" end="6" step="3">
<c:out value="${S}"/>
</c:forEach>
c:remove  ์ €์žฅ์˜์—ญ์—์„œ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œ  <c:remove scope="request" var="data" />
c:if  ์กฐ๊ฑด๋ฌธ ์ œ์–ด 
<c:if test="${empty data}">
data ๊ฐ’์ด ๋น„์–ด์žˆ์œผ๋ฉด ์‹คํ–‰
</c:if>
c:choose
c:when
c:otherwise 
๋ณตํ•ฉ์กฐ๊ฑด๋ฌธ ์ œ์–ด 
<c:choose>
<c:when test="${data == 'A'}">data ๊ฐ’์ด A์ด๋ฉด ์‹คํ–‰</c:when>
<c:when test="${data == 'B'}">data ๊ฐ’์ด B์ด๋ฉด ์‹คํ–‰</c:when>
<c:when test="${data == 'C'}">data ๊ฐ’์ด C์ด๋ฉด ์‹คํ–‰</c:when>
<c:otherwise>data ๊ฐ’์ด A, B, C๊ฐ’์ด ์•„๋‹ ๊ฒฝ์šฐ ์‹คํ–‰</c:otherwise>
</c:choose>
c:import!  ๋‹ค๋ฅธ jspํ™”๋ฉด์„ ํ˜„์žฌ ํ™”๋ฉด์— ์ถœ๋ ฅ  <c:import! url="test.jsp"/>
c:redirect  ๊ฒฝ๋กœ ์ด๋™  <c:redirect url="์ฃผ์†Œ"/>

 

2. ์—ฐ์‚ฐ์ž 

์—ฐ์‚ฐ์ž ์˜ˆ์ œ  ๊ฒฐ๊ณผ๋‚ด์šฉ 
==
eq 
${1 == 1}
${1 eq 1}
true 
!=
ne 
${1 != 1}
${1 ne 1} 
false 
<
lt
${1 < 10}
${1 lt 10} 
true 
>
gt
${1 > 10}
${1 gt 10} 
false 
<=
le
${1 <= 1}
${1 le 1} 
true 
>=
ge
${1>=0}
${1 ge 0} 
false 
&&
and
${true && false}
${true and false}
false
||
or 
${true || false}
${true or false} 
true 
!
not
${!true}
${not true} 
false 
empty ${empty name}  name์ด null์ด๊ฑฐ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด์ด๋ฉด true 
not empty  ${not empty name}  name์ด null๋„ ์•„๋‹ˆ๊ณ  ๋นˆ ๋ฌธ์ž์—ด๋„ ์•„๋‹ˆ๋ฉด true 

 

โœจ4. status ์ƒํƒœ ์†์„ฑ ์ œ์–ด 

< c:foreach items=”${RESULT}” var=”RESULT” varStatus=”status”>
 
    ${status.current}<br/> <!– ํ˜„์žฌ ์•„์ดํ…œ –>
    ${status.index}<br/>   <!– 0๋ถ€ํ„ฐ์˜ ์ˆœ์„œ –>
    ${status.count}<br/>   <!– 1๋ถ€ํ„ฐ์˜ ์ˆœ์„œ –>
    ${status.first}<br/>   <!– ํ˜„์žฌ ๋ฃจํ”„๊ฐ€ ์ฒ˜์Œ์ธ์ง€ ๋ฐ˜ํ™˜ –>
    ${status.last}<br/>    <!– ํ˜„์žฌ ๋ฃจํ”„๊ฐ€ ๋งˆ์ง€๋ง‰์ธ์ง€ ๋ฐ˜ํ™˜ –>
    ${status.begin}<br/>   <!– ์‹œ์ž‘๊ฐ’ –>
    ${status.end}<br/>     <!– ๋๊ฐ’ –>
    ${status.step}<br/>    <!– ์ฆ๊ฐ€๊ฐ’ –>
 
< /c:forEach>

 

โœจ5. JSTL for ๋ฌธ 

 

1. ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผ 

<c:forEach var="i" begin="1" end="5" step="1" varStatus="status">
    ๋ฒˆํ˜ธ : ${status.count}
    ์ด๋ฆ„ : ${item[i].name}
    ์ง์—… : ${item[i].job}
    ๊ธ‰์—ฌ : ${item[i].salary}
</c:forEach>

 

2. begin๊ณผ end๋กœ ์ ‘๊ทผ 

<c:forEach var="item" items="${list}" begin=0 end=5 step=1 varStatus="status">
    ๋ฒˆํ˜ธ : ${status.count}
    ์ด๋ฆ„ : ${item.name}
    ์ง์—… : ${item.job}
    ๊ธ‰์—ฌ : ${item.salary}
</c:forEach>

3. ์ผ๋ฐ˜์ ์ธ ์ ‘๊ทผ 

<c:forEach var="item" items="${list}" varStatus="status">
    ๋ฒˆํ˜ธ : ${status.count}
    ์ด๋ฆ„ : ${item.name}
    ์ง์—… : ${item.job}
    ๊ธ‰์—ฌ : ${item.salary}
</c:forEach>

4. JSTL break๋ฌธ ๊ตฌํ˜„ 

<c:set var="doneLoop" value="false" /> 
<c:forEach var="entity" items="${_STORE}" varStatus="status">
    <c:if test="${status.count % 6 eq 1}">
        <c:set var="doneLoop" value="false" />
    </c:if>
    <c:if test="${not doneLoop}"> 
        <span><input type="checkbox" id="store_id" name="store_id" value="<c:out value="${entity.STORE_ID}"/>" <c:out value="${entity.USE_YN}"/>><c:out value="${entity.STORE_NM}"/></span>
        <c:if test="${status.count % 6 eq 0}"> 
            <c:set var="doneLoop" value="true"/> 
        </c:if>
    </c:if>
</c:forEach>

 

 

 

300x250

์ฝ”๋“œ