WEB_JSTL
π WEB
π JSTL ( JSP Standard Tag Library )
JSTL μ΄λ 무μμΈκ°?
JSTLμ JAVA EE κΈ°λ°μ μΉ μ ν리μΌμ΄μ
κ°λ° νλ«νΌμ μν μ»΄ν¬λνΈ λͺ¨μμ΄λ€.
XML λ°μ΄ν° μ²λ¦¬μ 쑰건문, λ°λ³΅λ¬Έ, κ΅μ νμ μ§μν κ°μ μΌμ μ²λ¦¬νκΈ° μν JSP νκ·Έ λΌμ΄λΈλ¬λ¦¬λ₯Ό μΆκ°νμ¬ JSP μ¬μμ νμ₯νλ€.
JSTLμ JSP νμ΄μ§ λ΄μμ μλ° μ½λλ₯Ό λ°λ‘ μ¬μ©νμ§ μκ³ λ‘μ§μ λ΄μ₯νλ ν¨μ¨μ μΈ λ°©λ²μ μ 곡νλ€.
νμ€νλ νκ·Έ μ
μ μ¬μ©νμ¬ μλ° μ½λκ° λ€λ½κ±°λ¦¬λ κ² λ³΄λ€ λ μ½λμ μ μ§λ³΄μμ μμ© μννΈμμ΄ μ½λμ μ¬μ©μ μΈν°νμ΄μ€ κ°μ κ΄μ¬μ¬μ λΆλ¦¬λ‘ μ΄μ΄μ§κ² νλ€.
- custom tag : κ°λ°μκ° μ§μ νκ·Έλ₯Ό μμ±ν μ μλ κΈ°λ₯μ μ 곡
- custom tag μ€μμ λ§μ΄ μ¬μ©λλ κ²λ€μ λͺ¨μμ JSTLμ΄λΌλ κ·μ½μ λ§λ¬
- λ Όλ¦¬μ μΈ νλ¨, λ°λ³΅λ¬Έμ μ²λ¦¬, λ°μ΄ν°λ² μ΄μ€ λ±μ μ²λ¦¬λ₯Ό ν μ μλ€.
- JSTLμ JSP νμ΄μ§μμ μ€ν¬λ¦½νΈλ¦Ώμ μ¬μ©νμ§ μκ³ μ‘μ μ ν΅ν΄ κ°λ¨νκ² μ²λ¦¬ν μ μλ λ°©λ²μ μ 곡νλ€.
- JSTLμλ λ€μν μ‘μ μ΄ μμΌλ©°, EL κ³Ό ν¨κ» μ¬μ©νμ¬ μ½λλ₯Ό κ°κ²°νκ² μ¬μ©ν μ μλ€.
JSTL μ¬μ©λ°©λ²
- νλ‘μ νΈμμ λ£λ λ°©λ²
https://mvnrepository.com/artifact/javax.servlet/jstlμμ jstl-1.2/jar μ λ€μ΄ λ°μΌλ©΄ λλ€.
- ννμ΄μ§μμ jstl-1.2 ν΄λ¦
- jar νμΌ λ€μ΄
- dynamic web project μμ± -> WebContent -> WEB-INF -> lib -> jar νμΌ μ μ₯
JSTL Tag
- directive μ μΈ νμ
<%@ taglib prefix=βprefixβ uri=βuriβ %>
library | prefix | function | URI |
core | c | λ³μ μ§μ, νλ¦μ μ΄, URLμ²λ¦¬ | http://java.sun.com/jsp/jstl/core |
XML | x | XML μ½μ΄, νλ¦μ μ΄, XML λ³ν | http://java.sun.com/jsp/jstl/xml |
κ΅μ ν | fmt | μ§μ, λ©μΈμ§ νμ, μ«μ λ° λ μ§ νμ | http://java.sun.com/jsp/jstl/fmt |
database | sql | SQL | http://java.sun.com/jsp/jstl/sql |
ν¨μ | Collection, String μ²λ¦¬ | http://java.sun.com/jsp/jstl/functions |
JSTL - core tag
function | tag | description |
λ³μ μ§μ | set | jsp pageμμ μ¬μ© ν λ³μ μ€μ |
remomve | μ€μ ν λ³μλ₯Ό μ κ±° | |
νλ¦ μ μ΄ | if | 쑰건μ λ°λ₯Έ μ½λ μ€ν |
choose, when, otherwise | λ€μ€ 쑰건μ μ²λ¦¬ν λ μ¬μ© ( if ~ else if ~ else ) | |
forEach | array λ collectionμ κ° νλͺ©μ μ²λ¦¬ν λ μ¬μ© | |
forTokens | ꡬλΆμλ‘ λΆλ¦¬λ κ°κ°μ ν ν°μ μ²λ¦¬ν λ μ¬μ© ( StringTokenizer ) |
|
URL μ²λ¦¬ | import | URLμ μ¬μ©νμ¬ λ€λ₯Έ μμμ κ²°κ³Όλ₯Ό μ½μ |
redirect | μ§μ λ κ²½λ‘λ‘ redirect | |
url | URL μμ± | |
κΈ°ν νκ·Έ | catch | Exception μ²λ¦¬μ μ¬μ© |
out | JspWriterμ λ΄μ©μ μ²λ¦¬ν ν μΆλ ₯ |
JSTL - λ³μ μ μΈ : <c:set>
-
μ‘μ μ λ³μλ νΉμ κ°μ²΄μ νλ‘νΌν°μ κ°μ ν λΉν λ μ¬μ© - value μμ±μ κ°μ΄λ μ‘μ μ Body Contentλ‘ κ°μ μ€μ
- var μμ±μ λ³μλ₯Ό λνλ΄λ©°, λ³μμ μμ‘΄λ²μλ scope μμ±μΌλ‘ μ€μ ( λν΄νΈλ page )
- νΉμ κ°μ²΄μ νλ‘νΌν°μ κ°μ ν λΉν λλ target μμ±μ κ°μ²΄λ₯Ό μ€μ νκ³ propertyμ νλ‘νΌν°λͺ μ μ€μ
1. value μμ±μ μ΄μ©νμ¬ μμ‘΄λ²μ λ³μ κ° ν λΉ
<c:set value="value" var="varName" [scope="{page|request|session|application}"] />
2. μ‘μ
μ body 컨ν
μΈ λ₯Ό μ¬μ©νμ¬ μμ‘΄λ²μ λ³μ κ° ν λΉ
<c:set var="varName" [scope="{page|request|session|application}"]>
body content
</c:set>
3. value μμ±μ μ΄μ©νμ¬ λμ κ°μ²΄μ νλ‘νΌν° κ° ν λΉ
<c:set value="value" target="target" property="propertyName" />
4. μ‘μ
μ body 컨ν
μΈ λ₯Ό μ¬μ©νμ¬ λμ κ°μ²΄μ νλ‘νΌν° κ° ν λΉ
<c:set target="target" property="propertyName">
body content
</c:set>
JSTL - μμΈ : <c:catch>
- κΈ°λ³Έμ μΌλ‘ JSP νμ΄μ§λ μμΈκ° λ°μνλ©΄ μ§μ λ μ€λ₯νμ΄μ§λ₯Ό ν΅ν΄ μ²λ¦¬νλ€.
-
μ‘μ μ JSP νμ΄μ§μμ μμΈκ° λ°μν λ§ν μ½λλ₯Ό μ€λ₯νμ΄μ§λ‘ λκΈ°μ§ μκ³ μ§μ μ²λ¦¬ν λ μ¬μ© - var μμ±μλ λ°μν μμΈλ₯Ό λ΄μ page μμ‘΄λ²μ λ³μλ₯Ό μ§μ
-
μ μ‘μ μ ν¨κ» μ¬μ©νμ¬ Java μ½λμ try~catchμ κ°μ κΈ°λ₯μ ꡬνν μ μλ€.
try {
String str = null;
out.println("Length of string : " + str.length());
} catch(Throwable ex){
out.println(ex.getMessage());
}
μ΄ try ~ catch ꡬ문μ JSTLλ‘ νννλ©΄
<%@ page contentType="text/html" pageEncoding="UTF-8" errorPage="error.jsp" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:catch var="ex">
<%
String str = null;
out.println("Length of string : " + str.length()); // μμΈ λ°μ
%>
</c:catch>
<c:if test="$ex != null">
μμΈκ° λ°μνμμ΅λλ€. ${ex.message}
</c:if>
JSTL - 쑰건문 : <c:if>, <c:choose><c:when><c:otherwise>
-
μ‘μ μ test μμ±μ μ§μ λ ννμμ νκ°νμ¬ κ²°κ³Όκ° trueμΈ κ²½μ° μ‘μ μ body 컨ν μΈ λ₯Ό μν -
μ‘μ μ var μμ±μ ννμμ νκ° κ²°κ³ΌμΈ Boolean κ°μ λ΄μ λ³μλ₯Ό λνλ΄λ©°, λ³μμ μμ‘΄λ²μλ scope μμ±μΌλ‘ μ€μ -
μ‘μ μ μ¬μ©νλ©΄ if, else if, else μ κ°μ΄ μ²λ¦¬ν μ μλ€.
1. <c:if> μ‘μ
μ¬μ© μ
<c:if test="${userType eq 'admin'}">
<jsp:inclde page="admin.jsp" />
</c:if>
2. <c:if> μ‘μ
μ var μμ±
<c:if test="${userType eq 'admin'}" var="accessible">
<jsp:include page="admin.jsp" />
</c:if>
...
<c:if test="${category == 'user' && menu == 'list'}">
νμ λͺ©λ‘.
</c:if>
3. <c:choose><c:when><c:otherwise> μ‘μ
μ¬μ© μ
<c:choose>
<c:when test="${userType == 'admin'}">
κ΄λ¦¬μ νλ©΄ ...
</c:when>
<c:when test="${userType == 'member'}">
νμ μ¬μ©μ νλ©΄ ...
</c:when>
<c:otherwise>
μΌλ° μ¬μ©μ νλ©΄ ...
</c:otherwise>
</c:choose>
JSTL - λ°λ³΅λ¬Έ : <c:forEach>
-
μ‘μ μ 컬λ μ μ μλ νλͺ©λ€μ λνμ¬ μ‘μ μ body 컨ν μΈ λ₯Ό λ°λ³΅νμ¬ μν - 컬λ μ μλ Array, Collection, Map λλ μ½€λ§λ‘ λΆλ¦¬λ λ¬Έμμ΄μ΄ μ¬ μ μλ€.
- var μμ±μλ λ°λ³΅μ λν νμ¬ νλͺ©μ λ΄λ λ³μλ₯Ό μ§μ νκ³ items μμ±μ λ°λ³΅ν νλͺ©λ€μ κ°λ 컬λ μ μ μ§μ
- varStatus μμ±μ μ§μ ν λ³μλ₯Ό ν΅ν΄ νμ¬ λ°λ³΅μ μνλ₯Ό μ μ μλ€.
1. μ§μλ²μ§Έ κ³Όμ λͺ
λ§ μΆλ ₯νκΈ°
<c:forEach var="course" items="${courses}" begin="0" end="5" step="2">
${course.name}<br>
<c:forEach>
2. courses 리μ€νΈλ₯Ό λ°λ³΅νλ©΄μ μλ²κ³Ό κ³Όμ λͺ
μΆλ ₯νκΈ°
<c:forEach var="course" items="${courses}" varStatus="varStatus">
${varStatus.count}. ${course.name}
</c:forEach>
JSTL λ§λ¬΄λ¦¬
JSTLκ³Ό λ€μν νκ·Έμ λν΄ μμ보μλ€.
μ¬λ¬ μ μ©ν νκ·Έλ€μ΄ λ§μλ° κ·Έμ€ core νκ·Έλ₯Ό κ°μ₯ λ§μ΄ μ¬μ©νλ€.
JSTLκ³Ό ELμ μ μ ν μ¬μ©ν΄μ JSP νμ΄μ§ μ½λλ₯Ό κ°λ¨νκ³ κ°λ
μ± μ’κ² κ΅¬νν΄μΌ νλ€.