JSP Standard Tab Library
- 연산이나 조건문, 반복문을 편하게 처리할 수 있으며, JSP 페이지 내에서 자바코드를 사용하지 않고도 로직을 구현할 수 있도록 효율적인 방법을 제공한다.
- for(초기식; 조건식; 증감식){} →
<c:forEach> ... </c:forEach>
- CORE
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- FUNCTION
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
📌 FUNCTION 부분은 SJTL 선언문 밑에 작성해야 한다.
<c:set />
: 변수를 만들 때 사용
<c:out> </c:out>
: 값을 출력 (EL문을 좀 더 많이 쓴다)
EX)
<body>
<h2>JSTL TEST(변수)</h2>
<!-- 변수선언 / scope : 어느 범위까지 사용하는지에 대한 정의, page는 'pageContext' -->
<!-- jstl로 변수 선언 시 setAttribute로 값을 넣기 때문에 el문으로 값을 가지고 올 수 있다. -->
<c:set var="userid" value="apple" scope="page"/>
회원아이디 : <c:out value="${userid }"/><br/>
회원아이디 : ${userid }<br/>
<hr/>
<%-- <c:set>이 사이에 들어가는 값이 value</c:set> --%>
<c:set var="userid" scope="session">admin</c:set>
<c:set var="userpw" scope="session">admin0000</c:set>
회원아이디 : ${userid }<br/>
회원패스워드 : ${userpw }<br/>
회원아이디 : ${sessionScope.userid }<br/>
회원패스워드 : ${sessionScope.userpw }<br/>
</body>
<c:choose> </c:choose>
: 조건 제어 (switch문)✔️ 내부에 c:when, c:otherwise문만 있어야 한다.
EX)
<body>
<h2>JSTL TEST2 (제어-조건식)</h2>
<c:set var="num" value="100"/>
<c:if test="${num gt 50 }">
<script>
alert("이 수는 50보다 크다.");
</script>
</c:if>
<c:if test="${num gt 30 }">
<script>
alert("이 수는 30보다 크다.");
</script>
</c:if>
<hr/>
choose문 사용 <br/>
(if ~ else문의 경우 jstl에서는 choose를 이용하여 구성하여야 한다.) <br/>
<c:choose>
<c:when test="${num gt 50 }">
이 수는 50보다 크다!
</c:when>
<c:when test="${num gt 30 }">
이 수는 30보다 크다!
</c:when>
<c:when test="${num gt 10 }">
이 수는 10보다 크다!
</c:when>
<c:otherwise>
이 수는 그 외의 숫자이다!
</c:otherwise>
</c:choose>
</body>
<c:when> </c:when>
: 조건 제어 (case문)
<c:otherwise> </c:otherwise>
: 조건 제어 (default)
EX)
<body>
<c:choose>
<%-- pram.userid가 empty일 때 --%>
<c:when test="${empty param.userid }">
<form action="">
아이디 : <input type="text" name="userid"/><br/>
비밀번호 : <input type="password" name="userpw"/><br/>
<input type="submit"/>
</form>
</c:when>
<%-- pram.userid가 empty가 아닐 때 --%>
<c:otherwise>
<c:set var="userid" value="${param.userid }" />
<c:set var="userpw" value="${param.userpw }" />
<c:choose>
<c:when test="${userid == 'apple' }">김사과</c:when>
<c:when test="${userid == 'admin' }">관리자</c:when>
<c:otherwise>비회원</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</body>
<c:forEach> </c:forEach>
: 반복 제어 (for문)
EX)
<body>
<%-- for( int i=0; i<=10; i++) --%>
<c:forEach var="i" begin="0" end="10" step="1">
${i}
</c:forEach>
<hr/>
<c:set var="arData" value="<%=new int[]{10,20,30,40,50} %>" />
<c:forEach var="i" begin="0" end="4" step="1">
${arData[i]}
</c:forEach>
<hr/>
<c:forEach var="data" items="${arData }">
${data }
</c:forEach>
<hr/>
<%
HashMap<String, Integer> map = new HashMap<>();
map.put("하나", 1);
map.put("둘", 2);
map.put("셋", 3);
%>
<c:set var="map" value="<%=map %>"/>
<c:forEach var="entry" items="${map }">
${entry.key } : ${entry.value }<br/>
</c:forEach>
</body>
EX)
<body>
<%
HashMap<String, String> map = new HashMap<>();
map.put("1", "1");
map.put("2", "2");
map.put("3", "3");
map.put("4", "4");
map.put("5", "5");
%>
<c:set var="map" value="<%=map %>" />
<c:set var="str1" value="jstlfn"/>
<h1>Function 태그</h1>
length (map) : ${fn:length(map) }<br/>
length (str1) : ${fn:length(str1) }<br/>
toUpperCase(str1) : ${fn:toUpperCase(str1) }<br/>
toLowerCase(str1) : ${fn:toLowerCase(str1) }<br/>
</body>