- JSTL : Java Standard Tag Library
: JSP는 스크립트릿과 표현식 등의 스크립트 코드와 HTML 코드가 뒤섞이게 되는데, 이렇게 뒤섞인 JSP 코드는 알아보기 어렵다.
: HTML 태그와 비슷한 태그를 사용할 수 있다면, 스크립트 코드를 사용할 때보다 훨씬 좋고 이해하기 쉬운 코드를 작성할수 있다.
: 따라서 JSTL을 사용하면 자바 코드를 많이 줄일 수 있다.
: 이를 사용하기 위해서는 JSTL 관련 라이브러리가 필요하다
- http://search.maven.org/#browse%7C-658715035 에서 jstl-1.2.jar파일을 다운 받아서 WEB-INF/lib안에 넣어준다.
- 코어 태그 라이브러리
: if-else나 변수의 지정등과 같이 논리적인 처리를 위해 사용되는 스크립트 코드를 대체하기 위한 태그.
: 코어 태그 라이브러리를 사용하려면 JSP 페이지에 다음과 같이 taglib 디렉티브를 추가해주어야 한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
: set, remove, if, choose, forEach, forTokens, import, redirect, url, catch, out
- JSP에서 사용될 변수를 설정
: <c:set var="변수명" value="값" [scope="영역"]/>, <c:set var="변수명" [scope="영역"]>값</c:set>
- 설정한 변수를 제거
: <c:remove var="varName" [scope="영역"] />
- 조건에 따라 내부 코드를 수행
: <c:if test="조건"> ... </c:if>
- 다중 조건을 처리할 때 사용
: <c:choose> <c:when> ... </c:when> <c:otherwise> ... </c:otherwise> </c:choose>
- 콜렉션이나 Map의 각 항목을 처리할 때 사용
: <c:forEach var="변수" items="아이템"> ... </c:forEach>
<c:forEach var="i" begin="1" end="10" step="2"> ${i}사용 </c:forEach>
- 구분자로 분리된 각각의 토큰을 처리할 때 사용
: <c:forTokens var="token" items="문자열" delims="구분자"> ${token}사용 </c:forTokens>
- URL을 재작성
: <c:url value="URL" [var="varName"] [scope="영역"]> <c:param name="이름" value="값"/> </c:url>
- JspWriter에 내용을 알맞게 처리한 후 출력
: <c:out value="value" [escapeXml="(true|false)"][default="defaultValue"]/>, <c:out value="value" [escapeXml="(true|false)"] default Value </c:out>
- test.java 소스 (코어 태그 실습 전 java 소스에서 확장 for문 연습)
import java.util.Vector;
public class test {
public static void main(String[] args) {
String [] arr = {"크리스탈", "무역협회", "jsp", "Spring", "java"};
for(String str : arr){ // 데이터형 타입 : 배열 이름
System.out.println(str);
}
int [] arr2 = {1, 3, 5, 7, 9};
for(int a : arr2){ // 데이터형 타입 : 배열 이름
System.out.println(a);
}
Vector<String> v = new Vector<>();
v.add(arr[0]);
v.add(arr[1]);
v.add(arr[2]);
for(String vstr : v){
System.out.println(vstr);
}
}
}
- 결과
- SetTagTest.jsp 소스
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<!-- set, out 테스트 -->
<c:set var="a" value="100"/>
<c:set var="b" value="200"/>
<c:out value="${a}" /> <br>
<c:out value="${b}" /> <br>
<c:out value="${a+b}" /> <br><br>
<!-- if문 테스트 -->
<c:if test = "${a>150}">
<c:out value = "${a-100}" />
</c:if>
<c:if test = "${a<150}">
<c:out value = "${a+100}" />
</c:if> <br><br>
<!-- forEach문 테스트 -->
<c:forEach var="i" begin="1" end="10" step="2"> ${i} </c:forEach>
<br><br>
<c:set var = "intArray" value="<%=new int[] {9, 8, 7, 6, 5} %>" />
<c:forEach var="i" items="${intArray}" begin="0" end="5"> ${i} </c:forEach>
<br><br>
<% String [] arr = {"a", "b", "c", "d"}; %>
<c:set var = "strArray" value="<%=arr %>" />
<c:forEach var="i" items="${strArray}" begin="0" end="4"> ${i} </c:forEach>
<!-- forEach문을 사용하여 다이아몬스 찍기 -->
<br><br>
<!-- 위쪽 삼각형 출력 -->
<c:forEach var="i" begin="0" end="4">
<c:forEach var="j" begin="${i}" end="3">
${" "}
</c:forEach>
<c:forEach var="k" begin="0" end="${i}">
${"★"}
</c:forEach>
<c:forEach var="m" begin="1" end="${i}">
${"★"}
</c:forEach>
<br>
</c:forEach>
<!--아래쪽 삼각형 출력 -->
<c:forEach var="i" begin="0" end="4">
<c:forEach var="j" begin="0" end="${i}">
${" "}
</c:forEach>
<c:forEach var="k" begin="${i}" end="3">
${"★"}
</c:forEach>
<c:forEach var="m" begin="${i}" end="2">
${"★"}
</c:forEach>
<br>
</c:forEach>
</body>
</html>
- 결과