2 ๋ถ„ ์†Œ์š”

<SECTION 03> ์ปค์Šคํ…€ ํƒœ๊ทธ์™€ EL

๐Ÿ“˜ ์ปค์Šคํ…€ ํƒœ๊ทธ๋ž€?

์ปค์Šคํ…€ ํƒœ๊ทธ

  • ์‚ฌ์šฉ์ž ์ •์˜ ํƒœ๊ทธ
  • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ ์‚ฌ์šฉ ์ค„์ด๊ณ  ํƒœ๊ทธ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ๋Œ€์ฒด
  • ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํ™œ์šฉ
  • ์™ธํ˜•์ ์ธ ๊ตฌ์กฐ๋Š” XML(HTML) ํƒœ๊ทธ ๊ตฌ์กฐ, ์„œ๋ธ”๋ฆฟ ํ˜•ํƒœ๋กœ ๋ณ€ํ™œ๋  ๋•Œ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ํ†ตํ•ฉ๋จ
  • taglib ์ง€์‹œ์–ด ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ ํƒœ๊ทธ๊ฐ€ ์–ด๋””์— ์ •์˜๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ๋จผ์ € ์„ ์–ธํ•ด์•ผ ํ•จ
    • ํƒœ๊ทธ์— ์‚ฌ์šฉํ•  ์ ‘๋‘์–ด ์ง€์ •
  • ์ปค์Šคํ…€ ํƒœ๊ทธ ์ž์ฒด๊ฐ€ ์„œ๋ฒ„์—์„œ ํ•ด์„๋จ

    ์˜ˆ) <%@ taglib tagdir=โ€/WEB-INF/tagsโ€ prefix=โ€mโ€ %>


์ปค์Šคํ…€ ํƒœ๊ทธ ๋งŒ๋“ค๊ธฐ

2๊ฐ€์ง€ ๋ฐฉ๋ฒ•

  1. ํƒœ๊ทธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์„œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
  2. ํƒœ๊ทธ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
  • ํƒœ๊ทธ ํŒŒ์ผ์ด๋ž€ JSP ํŽ˜์ด์ง€์™€ ๋น„์Šทํ•œ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ
    • ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  taglib ์ง€์‹œ์–ด๋กœ ์ง€์ •
  • ํƒœ๊ทธ ํด๋ž˜์Šค๋Š” ํƒœ๊ทธ ํŒŒ์ผ๊ณผ ๋‹ฌ๋ฆฌ ์ž๋ฐ” ๋ฌธ๋ฒ•์— ๋”ฐ๋ผ ์™„์ „ํ•œ ์ž๋ฐ” ํด๋ž˜์Šค ํ˜•ํƒœ๋กœ ์ž‘์„ฑ
    • ์ปดํŒŒ์ผ ํ›„ .tld ํŒŒ์ผ์— ํƒœ๊ทธ ํด๋ž˜์Šค ๋“ฑ๋ก
    • .tld ํŒŒ์ผ์„ web.xml ํŒŒ์ผ์— ๋“ฑ๋ก
  • ์•„์ฃผ ๊ฐ„๋‹จํ•œ ํƒœ๊ทธ ํŒŒ์ผ
    • ํƒœ๊ทธ ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“  ์ปค์Šคํ…€ ์•ก์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณธ์ฒด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค
    • ์ปค์Šคํ…€ ์•ก์…˜์˜ ๋ณธ์ฒด : ์‹œ์ž‘ ํƒœ๊ทธ์™€ ๋ ํƒœ๊ทธ ์‚ฌ์ด์— ์˜ค๋Š” ๋ถ€๋ถ„

      ex) ์•ˆ๋…•ํ•˜์„ธ์š”

    • ์ปค์Šคํ…€ ์•ก์…˜์ด ๋ณธ์ฒด๋ฅผ ๊ฐ–์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํƒœ๊ทธ ํŒŒ์ผ์— tag ์ง€์‹œ์ž ์‚ฌ์šฉํ•ด์•ผ ํ•จ

EL ์ด๋ž€?

  • ํ‘œํ˜„ ์–ธ์–ด (Expression Language, EL)
    • ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ์ž๋ฐ” ๊ฐ์ฒด ํ˜น์€ scope object์— ์ €์žฅ๋œ ์ž๋ฐ” ๋นˆ ๊ฐ์ฒด๋ฅผ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
    • ์ œํ•œ๋œ ๊ฐ์ฒด ์ฐธ์กฐ ๊ฐ€๋Šฅ & ํ•ด๋‹น ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ
    • ์—ฐ์‚ฐ ๊ธฐ๋Šฅ ์ง€์›
  • EL์˜ ์žฅ์ 
    • ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ -> ๋ณ€์ˆ˜/๊ฐ์ฒด ์ฐธ์กฐ ์‰ฌ์›€
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ฑฐ๋‚˜ null ๊ฐ์ฒด ์ฐธ์กฐ ์‹œ, ์—๋Ÿฌ ๋ฐœ์ƒ x
  • ์ž๋ฐ” ๋นˆ ์ ‘๊ทผ
    • EL์„ ํ†ตํ•ด scope object์— ์ €์žฅ๋œ ๋นˆ ๊ฐ์ฒด ์ฐธ์กฐ ๋ฐฉ๋ฒ•

      ex) ${์ €์žฅ์ด๋ฆ„, ๋ณ€์ˆ˜๋ช…}

  • EL์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ
    • ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์•ก์…˜์œผ๋กœ ์ถœ๋ ฅ ๊ฐ€๋Šฅ

      ex) ์ด๋ฆ„: <%= m.name %> // ํ‘œํ˜„์‹ ์‚ฌ์šฉ

      ex) ์ด๋ฆ„: // ์•ก์…˜ ์‚ฌ์šฉ

  • EL ์—ฐ์‚ฐ

    ex) ${10 + 20} //์‚ฌ์น™์—ฐ์‚ฐ (+, -, *, /)

    ex) ${true && false} //๋…ผ๋ฆฌ์—ฐ์‚ฐ (true, false)

    ex) ${10 >= 20} //๋…ผ๋ฆฌ์—ฐ์‚ฐ

    ex) ${user.name == โ€œํ™๊ธธ๋™โ€ ? โ€œ๊ต์ˆ˜โ€ : โ€œํ•™์ƒโ€} //3ํ•ญ ์—ฐ์‚ฐ

  • ๋ฐฐ์—ด, ๋งต ๋ฐ์ดํ„ฐ ์—ฐ๋™
    • ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋ฐฐ์—ด์ด๋‚˜ ๋งต ํ˜•ํƒœ์ธ ๊ฒฝ์šฐ

      ex) ${myList[0]} // ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ

      ex) ${myMap[โ€œname]} // ๋งต์ธ ๊ฒฝ์šฐ

  • scopr object ์ ‘๊ทผ
    • EL์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  scope์—์„œ ์ž๋ฐ” ๋นˆ ๊ฐ์ฒด๋ฅผ ์ฐพ์Œ
    • ํŠน์ • scope๋งŒ ๋Œ€์ƒ์œผ๋กœ ์ฐธ์กฐ ์‹œ, โ€œ๋‚ด์žฅ๊ฐ์ฒด๋ช…Scope.์†์„ฑ๋ช…โ€

      ex) ์ด๋ฆ„: ${requestScore.m.name}


<SECTION 04> JSTL


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

๋ณ€์ˆ˜ ์ฒ˜๋ฆฌ, ํ๋ฆ„ ์ œ์–ด, URL ๊ด€๋ฆฌ, ์ถœ๋ ฅ ๋“ฑ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • ๋ณ€์ˆ˜ ๊ด€๋ จ

    remove, set

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

    if, choose, when, forTokens, โ€ฆ

  • URL ๊ด€๋ฆฌ

    import, redirect, url, param

  • ๊ธฐํƒ€

    catch, out

  • else ์ง€์› ์•ˆํ•จ
  • ์กฐ๊ฑด ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์†์„ฑ์„ ์ฐธ์กฐํ•  ๋ฒ”์œ„(Scope)๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ
    ex) <c:if test=โ€์กฐ๊ฑดโ€ [var=โ€๊ฒฐ๊ณผ ๋ณ€์ˆ˜โ€] [scope=โ€{page request session application}โ€]> ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์šฐ ์ถœ๋ ฅ๋˜๋Š” ๋ถ€๋ถ„ </c:if>

  • ํ™”๋ฉด์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ถœ๋ ฅํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ
  • ์ž๋ฐ”์˜ for๊ณผ ๊ฐ™์€ ๊ฐœ๋…
  • index, count ๋“ฑ์„ ์ง€์›ํ•˜๋Š” varStatus ์ œ๊ณต

    ex) <c:forEach [vae=โ€์ฐธ์กฐ ๊ฐ์ฒดโ€] [varStatus=โ€์ƒํƒœ ์ •๋ณด ๋ณ€์ˆ˜โ€] begin=โ€์‹œ์ž‘โ€ end=โ€์ข…๋ฃŒโ€ [step=โ€๋ฐ˜๋ณต ๋‹จ๊ณ„ ์ฆ๊ฐ€ ๊ฐ’, 1์ด ๊ธฐ๋ณธโ€]> ๋ฐ˜๋ณต ์ถœ๋ ฅ๋˜๋Š”ใ„ด ๋ถ€๋ถ„ </c:forEach>

  • var : ๋ฐฐ์—ด, ๋ฆฌ์ŠคํŠธ ๋“ฑ ์ง‘ํ•ฉ ํ˜• ๊ฐ์ฒด
  • varStatus : ๋ฐ˜๋ณต ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด

  • ํŠน์ • scope์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ
  • setAttribute()์™€ ๋™์ผ
  • ๊ธฐ๋ณธ์€ ๋ฌธ์ž์—ด ํ˜•ํƒœ, EL ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด๊ฐ™์€ ๊ฐ์ฒด๋„ ์ €์žฅ ๊ฐ€๋Šฅ
  • target ์†์„ฑ์œผ๋กœ ํŠน์ • ํƒ€์ž…์˜ ๊ฐ์ฒด์— setter ๋ฉ”์„œ๋“œ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ

    ex)

  • ์ถœ๋ ฅ์„ ์œ„ํ•œ ํƒœ๊ทธ, ๋Œ€๋ถ€๋ถ„ EL๋กœ ๋Œ€์ฒด
  • ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉ ์ค„์ด๋Š” ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    ex) product1(jstl);

    • excapeXml : true์ธ ๊ฒฝ์šฐ ํƒœ๊ทธ๋ฅผ ์ผ๋ฐ˜ ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ