๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
FOR SW ENGINEER๐Ÿ‘ฉ‍๐Ÿ’ป/JSP

JSP - JSTL (ํ‘œ์ค€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

by ์”จ๋‹ˆ 2021. 11. 29.
728x90

JSTL(ํ‘œ์ค€ ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)

JSP๋Š” <jsp:include>์™€ ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ถ”๊ฐ€ํ• ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ด๋ฅผ ์ปค์Šคํ…€ ํƒœ๊ทธ๋ผ๊ณ  ํ•œ๋‹ค.

์ปค์Šคํ…€ ํƒœ๊ทธ ์ค‘ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๋“ค์„๋ชจ์•„ JSTL(JSP Standard Teg Library)๋ผ๋Š” ํ‘œ์ค€์„ ๋งŒ๋“ค์—ˆ๋‹ค.

JSTL์„ ์‚ฌ์šฉํ•˜๋ฉด ์Šคํฌ๋ฆฝํŠธ๋ฆฟ ์ฝ”๋“œ์˜ ์‚ฌ์šฉ์„ ์ค„์ด๋ฉด์„œ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šดJSP ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ธฐ์กด์˜ JSP์ฝ”๋“œ๋Š” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์™€ HTML์ฝ”๋“œ๊ฐ€ ๋’ค์„ž์—ฌ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ฑฐ๋‚˜, ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๊ณ , ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ๋” ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•œ๋‹ค.

 

JSP๋Š” ์‹คํ–‰์ฝ”๋“œ์™€ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” HTML์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์„ž์„ ์ˆ˜ ์žˆ์–ด์„œ ๊ฐœ๋ฐœ์ด ํŽธ๋ฆฌํ•˜์ง€๋งŒ ๋ฐ˜๋Œ€๋กœ ์„ž์ด๋ฉด์„œ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์€ ๋‚˜๋น ์ง„๋‹ค.

๋ฐ˜๋ณต๋ฌธ์ด๋‚˜ ์กฐ๊ฑด๋ฌธ์„ JSTL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ๋ณด๊ธฐ ์ข‹๊ณ  ์ดํ•ดํ•˜๊ธฐ์‰ฌ์šด ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ• ์ˆ˜ ์žˆ๋‹ค.

 

<JSTL์ด ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ์˜ ์ข…๋ฅ˜>

 

 

1. JSTL์‚ฌ์šฉ ์ „ taglib๋””๋ ‰ํ‹ฐ๋ธŒ ์ถ”๊ฐ€

- prefix์— ๋“ค์–ด๊ฐ€๋Š” string์€ JSP์—์„œ ์ฝ”์–ด ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ ‘๋‘์–ด์ด๋‹ค.

   โ˜ž์œ„์˜ ์ฝ”๋“œ๋Š” prefix๊ฐ€ "c"์ด๋ฏ€๋กœ <c:if>, <c:choose>๋“ฑ์œผ๋กœ ์‚ฌ์šฉ๋จ

   โ˜ž๋งŒ์•ฝ prefix๋ฅผ "A"๋กœ ์„ค์ •ํ•œ๋‹ค๋ฉด <A:if>, <A:choose>๋กœ ์‚ฌ์šฉ๋˜์–ด์•ผํ•จ. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ prefix๋Š” "c"๋กœ ์ •์˜ํ•จ.

- uri ์†์„ฑ๊ฐ’์€ "http://java.sun.com/jsp/jstl/core"๋กœ ์„ค์ •ํ•ด์•ผํ•จ.

 

 

2. ์ฝ”์–ด ํƒœ๊ทธ

<์ฝ”์–ดํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ>

 

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

2.1-1) <c:if>ํƒœ๊ทธ

- <c:if>ํƒœ๊ทธ test ์†์„ฑ์—๋Š” true๋‚˜ false์— ํ•ด๋‹นํ•˜๋Š” boolean๊ฐ’์ด ์˜จ๋‹ค. (์กฐ๊ฑด ์ž‘์„ฑ)

- ๋˜ํ•œ test์†์„ฑ์€ ํ‘œํ˜„์‹์ด๋‚˜ EL ๋˜๋Š” ์ •์  ๋ฌธ์ž์—ด์„ ๊ฐ’์œผ๋กœ ๊ฐ€์งˆ์ˆ˜ ์žˆ๋‹ค.

 

<c:if>ํƒœ๊ทธ ์˜ˆ์‹œ1 : JSP๊ธฐ์กด ์ฝ”๋“œ, JSTL์ฝ”๋“œ ๋น„๊ต
 <c:if>ํƒœ๊ทธ ์˜ˆ์‹œ2

 

2.1-2) <c:choose>, <c:when>, <c:otherwise>ํƒœ๊ทธ

- ์ž๋ฐ”์˜ switch๊ตฌ๋ฌธ๊ณผ if-else๋ธ”๋ก์„ ํ˜ผํ•ฉํ•œ ํ˜•ํƒœ๋กœ ๋‹ค์ค‘ ์กฐ๊ฑด์ฒ˜๋ฆฌ์‹œ ์‚ฌ์šฉํ•œ๋‹ค.

- <c:choose>ํƒœ๊ทธ๋Š” ๋‹ค์ˆ˜์˜ <c:when>ํƒœ๊ทธ๋ฅผ ์ค‘์ฒฉํ•ด ์‚ฌ์šฉํ•˜๊ณ , ๊ฐ๊ฐ์˜ <c:when>๋Š” test์†์„ฑ์˜ ๊ฐ’์ด true์ผ๋•Œ ๋‚ด๋ถ€๋ธ”๋ก ์ˆ˜ํ–‰ํ•œ๋‹ค.  ๋งŒ์•ฝ ๋ชจ๋“  <c:when>ํƒœ๊ทธ๊ฐ€ false์ผ ๊ฒฝ์šฐ์— <c:otherwise>๋ฅผ ์‹คํ–‰ํ•จ.

 

2.1-3) <c:forEach>ํƒœ๊ทธ

- <c:forEach>ํƒœ๊ทธ๋Š” ์ž๋ฐ”์˜ for, do-while๋“ฑ์„ ๋Œ€์‹ ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

- <c:forEach>ํƒœ๊ทธ๋Š” ๋ฐฐ์—ด, ๋ฆฌ์ŠคํŠธ, Map์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

- <c:forEach>ํƒœ๊ทธ์˜ items์†์„ฑ์—๋Š” Map, list, Array๋ฐฐ์—ด ๋“ฑ์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

- <c:forEach>ํƒœ๊ทธ์˜ var์†์„ฑ์œผ๋กœ ์ด๋ฆ„ ์ง€์ •ํ•ด collection์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถœ๋ ฅํ•ด๋ƒ„.

- <c:forEach>ํƒœ๊ทธ์˜ begin, end์†์„ฑ์„ ํ†ตํ•ด ์ž๋ฐ”์˜ for๋ฌธ๊ณผ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋‚ผ์ˆ˜๋„ ์žˆ๋‹ค.

  โ˜ž ์›ํ•˜๋Š” ๋ฒ”์œ„๋งŒ ์‹คํ–‰ํ• ์ˆ˜ ์žˆ๋„๋ก ์ง€์ •!

- <c:forEach>ํƒœ๊ทธ step์†์„ฑ์„ ์‚ฌ์šฉํ•ด ์ฆ๊ฐ๊ฐ’ ์ง€์ •.

 

< <c:forEach> ํƒœ๊ทธ์˜ ์„ค๋ช… ์š”์•ฝ >

 

<c:forEach>์˜ˆ์ œ : ์กฐ๊ฑด์„ค์ •ํ•ด ์ฝ”๋“œ ๋ฐ˜๋ณต

 

<c:forEach> ์˜ˆ์ œ2 : ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๊ฐ’์„ ๋ฐ›์•„์„œ

 

<c:forEach> ์˜ˆ์ œ3 : 1~9๋‹จ์˜ ๊ตฌ๊ตฌ๋‹จ

 

- <c:forEach> ๋ฐฐ์—ด์‚ฌ์šฉ

 

- <c:forEach> List ์‚ฌ์šฉ

 

- <c:forEach> Map์‚ฌ์šฉ

 

 

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

2.2-1) <c:set>ํƒœ๊ทธ

- <c:set>ํƒœ๊ทธ๋Š” EL ๋ณ€์ˆ˜์˜ ๊ฐ’์ด๋‚˜, EL ๋ณ€์ˆ˜์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉ.

- <c:set>ํƒœ๊ทธ์˜ var ์†์„ฑ : ๊ฐ’์„ ์ €์žฅํ•  EL ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์ง€์ •

- <c:set>ํƒœ๊ทธ์˜ value์†์„ฑ: ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ง€์ •.  ํ‘œํ˜„์‹, EL,  ์ •์ ์ธ ํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ์ง€์ •.

- <c:set>ํƒœ๊ทธ์˜ scope์†์„ฑ: ๋ณ€์ˆ˜๋ฅผ ์ €์žฅํ•  ์˜์—ญ์„ ์ง€์ •ํ•œ๋‹ค.  ๊ฐ’์€(page, request, session, application)์ค‘ ํ•˜๋‚˜๊ฐ€ ์˜ด. ์ง€์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด page๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์˜ด.

<c:set>์˜ˆ์ œ1
<c:set>์˜ˆ์ œ2

 

 

2.3 URL์ฒ˜๋ฆฌ

2.3-1) <c:url>ํƒœ๊ทธ

- <c:url>ํƒœ๊ทธ๋Š” URL์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต.

- <c:url>ํƒœ๊ทธ์˜ var์†์„ฑ, scope์†์„ฑ์€ ์ƒ๋žต ๊ฐ€๋Šฅ.

- <c:url>ํƒœ๊ทธ์˜  var์†์„ฑ์„ ์ง€์ •ํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜์— ์ƒ์„ฑํ•œ URL ์ง€์ •.

- <c:url>ํƒœ๊ทธ ๋‚ด  <c:param>ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ URL์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.

- <c:url>ํƒœ๊ทธ์˜ href์†์„ฑ์— URL๊ฒฝ๋กœ ์ง€์ •.

- url - ์ ˆ๋Œ€URL : root ๊ฒฝ๋กœ (http:/)๋ฅผ ํฌํ•จํ•œ ์™„์ „ํ•œ URL

      - ์ƒ๋Œ€ URL : ์Šฌ๋ž˜์‹œ('/')๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Œ

<c:url>ํƒœ๊ทธ ์˜ˆ์ œ

 

 

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

2.4-1) <c:out>ํƒœ๊ทธ

- JSP์— ๋ฐ์ดํ„ฐ ์ถœ๋ ฅํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ

-<c:out>ํƒœ๊ทธ์˜ value์†์„ฑ : ์ถœ๋ ฅํ•  ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ„.

-<c:out>ํƒœ๊ทธ default์†์„ฑ : value์†์„ฑ์—์„œ ์ง€์ •ํ•œ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉ๋  ๊ฐ’ ์ง€์ •

<c:out>ํƒœ๊ทธ ์˜ˆ์‹œ

728x90