๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŒ  ์ž๋ฐ” ์„œ๋ฒ„ ํŽ˜์ด์ง€ JSP

JSP - JSTL ํƒœ๊ทธ (JSP Standard Tag Library)

by Meteora_ 2021. 3. 23.
728x90

JSTL(JSP Standard Tag Library)

 

 

1. JSTL(JSP Standard Tag Libray)

  - jsp ํŽ˜์ด์ง€์—์„œ ์กฐ๊ฑฐ๋ฌธ ์ฒ˜๋ฆฌ, ๋ฐ˜๋ณต๋ฌธ ์ฒ˜๋ฆฌ๋“ฑ์„ html tag ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ• ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค. 

  - EL๊ณผ์˜ ์ฐจ์ด์ ์€ EL์€ ๋‹จ์ˆœํžˆ ๋ณ€์ˆ˜๋ฅผ ํ‘œํ˜„ํ•ด ์ฃผ๋Š”๊ฒƒ์ด๋ฏ€๋กœ ๋‹คํ–ฅํ•œ ํ˜•ํƒœ๋กœ jsp๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜ ์—†๋‹ค.

  - JSTL์˜ ์ƒ์šฉ ๋ชฉ์ ์€ ์Šคํฌ๋ฆฟ์„ ๋Œ€์ฒด ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

  - JSTL์€ ์ปค์Šคํ…€ Tag์ด๋‹ค.

  

2. JSTL ์‚ฌ์šฉ๋ฒ•

  - JSTL์€ ์ถ”๊ฐ€ ์ ์ธ jar ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค

  - http://tomcat.apache.org/download-taglibs.cgi  ์—ฌ๊ธฐ์—์„œ ๋‹ค์Œ์˜ ํŒŒ์ผ 3๊ฐœ์˜ ๋ฐ›์€ ํ›„ WEB-INF/lib/ ์— ๋ณต์‚ฌํ•˜๋ฉด๋œ๋‹ค

 

 

3. JSTL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…๋ฅ˜ ๋ฐ ๊ธฐ๋Šฅ

   (์ถœ์ฒ˜: http://youssol.tistory.com/8 [์ดˆ์ธ, ์ดˆ์›”์ด๋„ค ์ด์•ผ๊ธฐ])

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 

 ํ•˜์œ„ ๊ธฐ๋Šฅ

์ ‘๋‘์–ด

๊ด€๋ จ URI 

 ์ฝ”์–ด

 ๋ณ€์ˆ˜ ์ง€์›, ํ๋ฆ„ ์ œ์–ด, URL ์ฒ˜๋ฆฌ

 c

 http://java.sun.com/jsp/jstl/core

 XML

 XML ์ฝ”์–ด, ํ๋ฆ„์ œ์–ด, XML ๋ณ€ํ™˜

 x

 http://java.sun.com/jsp/jstl/xml 

 ๊ตญ์ œํ™”

 ์ง€์—ญ, ๋ฉ”์„ธ์ง€ ํ˜•์‹, ์ˆซ์ž ๋ฐ ๋‚ ์งœ ํ˜•์‹

 fmt

 http://java.sun.com/jsp/jstl/fmt

 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

 SQL

 sql

 http://java.sun.com/jsp/jstl/sql

 ํ•จ์ˆ˜

 ์ฝœ๋ ‰์…˜ ์ฒ˜๋ฆฌ, String ์ฒ˜๋ฆฌ

 

 http://java.sun.com/jsp/jstl/functions


4. Core(์ฝ”์–ด) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

 

5. JSTL ์ƒ์šฉ ํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ • 

  - JSTL์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ์šด ์ง€์‹œ์ž๋ฅผ ๋งŒ๋“ค์–ด์•„ํ–”๋‹ค

  - Core๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ ‘์ˆ˜์–ด๋Š” c์ด๋ฏ€๋กœ prefix๋ฅผ c๋กœ ํ•ด์ค€๋‹ค.

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

 

6. JSTL ํƒœ๊ทธ ์‚ฌ์šฉ๋ฒ•

 ==================================== ๋ณ€์ˆ˜ ์ง€์› ====================================

  1) set 

      <c:set var="varnname" scope="request" value="someValue"/>

                               ๋˜๋Š”

      <c:set var="varnname" scope="request">

some value

 </c:set>

 - scope : ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•  ์˜์—ญ

 

  2) remove

      <c:remove var="varname" scope="request"/>

     - scope : ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋œ ์˜์—ญ

 

 ==================================== ํ๋ฆ„ ์ œ์–ด ====================================

  3) if 

      <c:if test="์กฐ๊ฑด">

...

...  

 </c:if>

 

  4) choose

      <c:choose>

   <c:when test="์กฐ๊ฑด1">

      ....

   </c:when>

   <c:when test="์กฐ๊ฑด2">

 ....

   </c:when>

        <c:otherwise>

 ...

   </c:otherwise>

</c:choose>

 

  5) forEach

    <c:forEach var="๋ณ€์ˆ˜" items="์•„์ดํ…œ(๋ฐฐ์—ด๋˜๋Š” ๋งต์ด ๋“ค์–ด๊ฐ„๋‹ค)" [begin="์‹œ์ž‘๋ฒˆํ˜ธ"] [end="๋๋ฒˆํ˜ธ"]>

      ${๋ณ€์ˆ˜}

    </c:forEach>

 

  6) forToken

   <c:forTokens items="123-456-789" delims="-" var="sel">

       ${sel}

   </c:forTokens>

   - items : ์ž๋ฅผ ๋ฌธ์ž์—ด 

   - delims : ๊ตฌ๋ถ„ ๋ฌธ์ž์—ด

   - val : ์ž๋ฅธ ๋ฌธ์ž์—ด์ด ์ €์žฅ๋  ๋ณ€์ˆ˜

 

 ==================================== url ์ฒ˜๋ฆฌ  ====================================

  7) import 

   <c:import url="URL" charEncoding="์บ๋ฆญํ„ฐ์ธ์ฝ”๋”ฉ" var="๋ณ€์ˆ˜๋ช…" scope="๋ฒ”์œ„">

     <c:param name="ํŒŒ๋ผ๋ฉ”ํ„ฐ์ด๋ฆ„" value="ํŒŒ๋ผ๋ฉ”ํ„ฐ๊ฐ’"/>

   </c:import>

   - URL : ๊ฒฐ๊ณผ๋ฅผ ์ฝ์–ด์˜ฌ URL

   - charEncoding : ์ฝ์–ด์˜จ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์บ๋ฆญํ„ฐ ์ธ์ฝ”๋”ฉ

   - var : ์ฝ์–ด์˜จ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜๋ช…

   - scope : ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•  ์˜์—ญ

   - <c:param> ํƒœ๊ทธ๋Š” url ์†์„ฑ์— ์ง€์ •ํ•œ ์‚ฌ์ดํŠธ์— ์—ฐ๊ฒฐ ํ• ๋•Œ ์ „์†กํ•  ํŒŒ๋ผ๋ฉ”ํ„ฐ ์ •๋ณด 

 

  8) redirect

   <c:redirect url="redirectํ•  URL">

<c:param name="ํŒŒ๋ผ๋ฉ”ํ„ฐ์ด๋ฆ„" value="ํŒŒ๋ผ๋ฉ”ํ„ฐ๊ฐ’"/>

   </c:redirect>

   - url : redirection ํ•  ์ฃผ์†Œ

   - <c:param> ํƒœ๊ทธ๋Š” url ์†์„ฑ์— ์ง€์ •ํ•œ ์‚ฌ์ดํŠธ์— ์—ฐ๊ฒฐ ํ• ๋•Œ ์ „์†กํ•  ํŒŒ๋ผ๋ฉ”ํ„ฐ ์ •๋ณด 

 

  9) url 

   <c:url var="URL ์ €์žฅ ๋ณ€์ˆ˜" value="URL" scope="๋ณ€์ˆ˜ ๊ณต์œ  ๋ฒ”์œ„" />

<c:param name="keyword" value="${searchTerm}"/> <c:param name="month" value="02/2003"/>

</c:url>

   - var : ์ƒ์„ฑํ•œ URL์„์ € ์žฅํ•  ๋ณ€์ˆ˜๋ช…

   - value : ์ƒ์„ฑํ•  URL

   - scope : ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•  ์˜์—ญ

   - <c:param> ํƒœ๊ทธ๋Š” url ์†์„ฑ์— ์ง€์ •ํ•œ ์‚ฌ์ดํŠธ์— ์—ฐ๊ฒฐ ํ• ๋•Œ ์ „์†กํ•  ํŒŒ๋ผ๋ฉ”ํ„ฐ ์ •๋ณด 

 

 ==================================== ๊ธฐํƒ€ ํƒœ๊ทธ ====================================

  10) catch

    <c:catch var ="catchException">

       <% int x = 5/0;%>

     </c:catch>

 

     <c:if test = "${catchException != null}">

      <p>The exception is : ${catchException} <br />

      There is an exception: ${catchException.message}</p>

     </c:if>

    - var : ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๊ฐ€ ์ €์žฅ๋  ๋ณ€์ˆ˜๋ช…

 

  11) out

    <c:out value="value" escapeXml="{true|fale|" default="default value"/>

    - value : JspWrite์— ์ถœ๋ ฅํ•  ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ value์†์„ฑ์˜ ๊ฐ’์„ String๊ณผ ๊ฐ™์€ ๋ฌธ์ž์—ด์ด๋‹ค. ๋งŒ์•ฝ value์˜ ๊ฐ’์ด java.io.Reader์˜ ํ•œ ์ข…๋ฅ˜๋ผ๋ฉด out ํƒœ๊ทธ๋Š” Reader๋กœ ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์„œ JspWrite์— ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

    - escapeXml : true์ผ ๊ฒฝ์šฐ ์•„๋ž˜ ์™€๊ฐ™์ด ๋ฌธ์ž๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

 ๋ฌธ์ž

๋ณ€๊ฒฝ๋  ํ˜•ํƒœ 

 < 

 &lt; 

 > 

 &gt; 

 &

 &amp; 

 '

 &#039;

 "

 &#034;

 

    - default : value ์†์„ฑ์— ์ง€์ •ํ•œ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„๋•Œ ์ƒ์šฉ๋  ๊ฐ’์„ ์ง€์ •ํ•œ๋‹ค.

 

 

์ถœ์ฒ˜: https://doitnow-man.tistory.com/90 [์ฆ๊ฑฐ์šด์ธ์ƒ (์‹คํŒจ ๋˜ํ•˜๋‚˜์˜ ์„ฑ๊ณต)]

 

๋Œ“๊ธ€