SpringFramework 11. JSTL - swkim0128/PARA GitHub Wiki


type: Spring archive: false

JSTL(Jsp Standard Tag Library)


μžλ°”μ„œλ²„ νŽ˜μ΄μ§€ ν‘œμ€€ νƒœκ·Έ 라이브러리(JavaServer Pages Standard Tag Library, μ•½μΉ­ JSTL)은 Java EE 기반의 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 ν”Œλž«νΌμ„ μœ„ν•œ μ»΄ν¬λ„ŒνŠΈ λͺ¨μŒμ΄λ‹€. JSTL은 XML 데이터 μ²˜λ¦¬μ™€ 쑰건문, 반볡문, κ΅­μ œν™”μ™€ μ§€μ—­ν™” 같은 일을 μ²˜λ¦¬ν•˜κΈ° μœ„ν•œ JSP νƒœκ·Έ 라이브러리λ₯Ό μΆ”κ°€ν•˜μ—¬ JSP 사양을 ν™•μž₯ν–ˆλ‹€. JSTL은 JSR 52λ‘œμ„œ JCP ν•˜μ—μ„œ κ°œλ°œλ˜μ—ˆμœΌλ©°, 2006λ…„ 5μ›” 8일에 JSTL 1.2κ°€ μΆœμ‹œ λ˜μ—ˆλ‹€.

JSTL은 JSP νŽ˜μ΄μ§€ λ‚΄μ—μ„œ μžλ°” μ½”λ“œλ₯Ό λ°”λ‘œ μ‚¬μš©ν•˜μ§€ μ•Šκ³  λ‘œμ§μ„ λ‚΄μž₯ν•˜λŠ” 효율적인 방법을 μ œκ³΅ν•œλ‹€. ν‘œμ€€ν™”λœ νƒœκ·Έ 셋을 μ‚¬μš©ν•˜μ—¬ μžλ°” μ½”λ“œκ°€ λ“€λ½κ±°λ¦¬λŠ” 것보닀 더 μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ™€ μ‘μš© μ†Œν”„νŠΈμ›¨μ–΄ μ½”λ“œμ™€ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ κ°„μ˜ κ΄€μ‹¬μ‚¬μ˜ λΆ„λ¦¬λ‘œ μ΄μ–΄μ§€κ²Œ ν•œλ‹€.

  • custom tag : κ°œλ°œμžκ°€ 직접 νƒœκ·Έλ₯Ό μž‘μ„±ν•  수 μžˆλŠ” κΈ°λŠ₯을 제곡.
  • custom tag μ€‘μ—μ„œ 많이 μ‚¬μš©λ˜λŠ” 것듀을 λͺ¨μ•„μ„œ JSTLμ΄λΌλŠ” κ·œμ•½μ„ λ§Œλ“¦.
  • 논리적인 νŒλ‹¨, 반볡문의 처리, λ°μ΄ν„°λ² μ΄μŠ€ λ“±μ˜ 처리λ₯Ό ν•  수 μžˆλ‹€.
  • JSP 2.1 ~ JSP 2.2와 ν˜Έν™˜λ˜λŠ” JSTL 버전은 1.2이닀.
  • JSTL은 JSP νŽ˜μ΄μ§€μ—μ„œ 슀크립트 νŠΈλ¦Ώμ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ•‘μ…˜μ„ 톡해 κ°„λ‹¨ν•˜κ²Œ μ²˜λ¦¬ν•  수 μžˆλŠ” 방법을 제곡.
  • JSTLμ—λŠ” λ‹€μ–‘ν•œ μ•‘μ…˜μ΄ 있으며, ELκ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬ μ½”λ“œλ₯Ό κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•  수 μžˆλ‹€.
  • https://mvnrepository.com/artifact/javax.servlet/jstl >> jstl-1.2.jar download

JSTL Tag


directive μ„ μ–Έ ν˜•μ‹ : <%@ taglib prefix="prefix" uri="uri" %>

!Untitled 42.png

JSTL - core tag.


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

!Untitled 1 20.png

λ³€μˆ˜ μ„ μ–Έ : <c:set>


<c:set> μ•‘μ…˜μ€ λ³€μˆ˜λ‚˜ νŠΉμ • 객체의 ν”„λ‘œνΌν‹°μ— 값을 ν• λ‹Ήν•  λ•Œ μ‚¬μš©.

value μ†μ„±μ˜ κ°’μ΄λ‚˜ μ•‘μ…˜μ˜ Body content둜 값을 μ„€μ •.

var 속성은 λ³€μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄λ©°, λ³€μˆ˜μ˜ 생쑴 λ²”μœ„λŠ” scope μ†μ„±μœΌλ‘œ μ„€μ •. (λ””ν΄νŠΈλŠ” page)

νŠΉμ • 객체의 ν”„λ‘œνΌν‹°μ— 값을 ν• λ‹Ήν•  λ•ŒλŠ” target 속성에 객체λ₯Ό μ„€μ •ν•˜κ³  property에 ν”„λ‘œνΌν‹°λͺ…을 μ„€μ •.

!Untitled 2 19.png

μ˜ˆμ™Έ : <c:catch>


기본적으둜 JSP νŽ˜μ΄μ§€λŠ” μ˜ˆμ™Έκ°€ λ°œμƒν•˜λ©΄ μ§€μ •λœ 였λ₯˜νŽ˜μ΄μ§€λ₯Ό 톡해 μ²˜λ¦¬ν•œλ‹€.

<c:catch> μ•‘μ…˜μ€ JSP νŽ˜μ΄μ§€μ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν•  λ§Œν•œ μ½”λ“€λ₯΄ 였λ₯˜ νŽ˜μ΄μ§€λ‘œ λ„˜κΈ°μ§€ μ•Šκ³  직접 μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©.

var μ†μ„±μ—λŠ” λ°œμƒν•œ μ˜ˆμ™Έλ₯Ό 담을 page μƒμ‘΄λ²”μœ„ λ³€μˆ˜λ₯Ό μ§€μ •.

<c:catch>와 <c:if> μ•‘μ…˜μ„ ν•¨κ»˜ μ‚¬μš©ν•˜λ©° Java μ½”λ“œμ˜ try-catch와 같은 κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆλ‹€.

!Untitled 3 18.png

쑰건문 : <c:if>, <c:choose><c:when><c:otherwise>


<c:if> μ•‘μ…˜μ€ test 속성에 μ§€μ •λœ ν‘œν˜„μ‹μ„ ν‰κ°€ν•˜μ—¬ κ²°κ³Όκ°€ true인 경우 μ•‘μ…˜μ— Body 컨텐츠λ₯Ό μˆ˜ν–‰

<c:if> μ•‘μ…˜μ˜ var 속성은 ν‘œν˜„μ‹μ˜ 평가 결과인 Boolean 값을 담을 λ³€μˆ˜λ₯Ό λ‚˜νƒ€λ‚΄λ©°, λ³€μˆ˜μ˜ 생쑴 λ²”μœ„λŠ” scope μ†μ„±μœΌλ‘œ μ„€μ •.

<c:choose><c:when><c:otherwise> μ•‘μ…˜μ„ μ‚¬μš©ν•˜λ©΄ if, else if, else 와 같이 μ²˜λ¦¬ν•  수 μžˆλ‹€.

!Untitled 4 14.png

반볡문 : <c:forEach>


<c:forEach> μ•‘μ…˜μ€ μ»¬λ ‰μ…˜μ— μžˆλŠ” ν•­λͺ©λ“€μ— λŒ€ν•˜μ—¬ μ•‘μ…˜μ˜ Body 컨텐츠λ₯Ό λ°˜λ³΅ν•˜μ—¬ μˆ˜ν–‰.

μ»¬λ ‰μ…˜μ—λŠ” Array, Collection, Map λ˜λŠ” 콀마둜 λΆ„λ¦¬λœ λ¬Έμžμ—΄μ΄ 올 수 μžˆλ‹€.

var μ†μ„±μ—λŠ” λ°˜λ³΅μ— λŒ€ν•œ ν˜„μž¬ ν•­λͺ©μ„ λ‹€λ―„γ„΄ λ³€μˆ˜λ₯Ό μ§€μ •ν•˜κ³  items 속성은 λ°˜λ³΅ν•  ν•­λͺ©λ“€μ„ κ°–λŠ” μ»¬λ ‰μ…˜μ„ μ§€μ •.

varStatus 속성에 μ§€μ •ν•œ λ³€μˆ˜λ₯Ό 톡해 ν˜„μž¬ 반볡의 μƒνƒœλ₯Ό μ•Œ 수 μžˆλ‹€.

!Untitled 5 13.png

⚠️ **GitHub.com Fallback** ⚠️