Core 태그 라이브러리
는 JSTL에서 변수, 제어 구문, URL 처리 등의 기능을 수행할 수 있게 해주는 JSTL 라이브러리입니다. Core 태그 라이브러리
를 통해서 자바 코드를 JSTL로 대체하여 사용할 수 있게 되어 JSP 문서에서 자바 코드를 줄일 수 있습니다.
(톰캣 기준)
Core 태그 라이브러리
를 포함한 JSTL 태그 라이브러리들은 단순히 JSTL 라이브러리(.jar)를 프로젝트에 추가한다고 해서 바로 사용할 수 있는 것은 아니고taglib 디렉티브 태그
를 이용해서 JSP 문서에 라이브러리를 사용한다고 알려야 사용이 가능합니다.<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
그러면 Core 태그 라이브러리
에는 어떤 기능들이 있는지 살펴보도록 하겠습니다.
<c:set>
은 변수를 사용할 수 있도록 변수를 지정하는 태그입니다.
<c:set var="변수명" value="값" [scope="스코프"] />
<!-- 스코프는 option -->
사용할 수 있는 스코프는 다음과 같습니다.
<%@ page
contentType="text/html;charset=UTF-8"
language="java"
pageEncoding="UTF-8"
isELIgnored="false"
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<c:set var="str" value="Hello JSTL" scope="page"/>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>str: ${str}</h2>
</body>
</html>
<c:remove>
은 선언했던 변수를 제거하는데 사용하는 태그입니다.
<c:remove var="변수명" [scope=""] />
위 코드에 <c:remove>
태그만 추가해보고 실행해보겠습니다.
<c:set var="str" value="Hello JSTL" scope="page"/>
<c:remove var="str" />
<c:if>
는 자바의 if 문
을 대체하기 위한 태그입니다.
<c:if test="${조건식}" var="변수명" [scope=""] />
여기서 변수 var
는 조건식의 결과를 저장하는 변수입니다.
<body>
<c:if test="${1 == 1}" var="result">
<h2>1 == 1 ? ${result}</h2>
</c:if>
</body>
<c:choose>
는 자바의 switch 문
을 대체하기 위한 태그입니다.
<c:choose>
<c:when test="${조건식}">조건식이 true일때 수행할 내용</c:when>
<c:when test="${조건식}">조건식이 true일때 수행할 내용</c:when>
(...)
</c:choose>
<body>
<c:set var="num" value="2" />
<c:choose>
<c:when test="${num == 1}"><h1>1</h1></c:when>
<c:when test="${num == 2}"><h1>2</h1></c:when>
<c:when test="${num == 3}"><h1>3</h1></c:when>
<c:when test="${num == 4}"><h1>4</h1></c:when>
</c:choose>
</body>
<c:forEach>
는 반복문을 수행하기 위한 태그입니다.
<c:forEach
var="변수명" items="반복할 객체"
begin="시작값" end="종료값" step="증가값"
varStatus="반복 상태 변수"
>
</c:forEach>
여기서 변수명 var은 루프 변수(주로 i, j, k)
라고 하는 변수를 지정합니다. 반복 상태 변수 varStatus
도 눈에 띄는데요. 반복 상태 변수
는 현재 루프의 상태를 저장하는 변수입니다. 반복 상태 변수는 4가지 속성을 갖습니다.
반복 상태 변수 속성 | 설명 |
---|---|
first | 첫 번째 반복인지를 판정해 boolean 값 반환 |
last | 마지막 반복인지를 판정해 boolean 값 반환 |
index | 객체 items의 각 항목을 가리키는 index (0부터 시작) |
count | 현재 반복이 몇 번째 반복인지 반환 (1부터 시작) |
다음 예제는 구구단 2단을 <c:forEach>
로 출력하는 예제입니다.
<body>
<c:forEach var="i" begin="1" end="9" step="1" varStatus="current">
<p>2 X ${i} = ${2 * i}, 반복 횟수: ${current.count}</p>
</c:forEach>
</body>
<c:url>
은 JSP 페이지에서 URL 정보를 저장하는 태그입니다.
<c:url var="변수명" value="url 경로" [scope=""]>
</c:url>
<c:url>
태그 사이에 <c:param>
태그를 사용해서 url에 데이터를 전달할 수도 있습니다.
<c:url var="변수명" value="url 경로" [scope=""]>
<c:param name="파라미터명" value="값" />
</c:url>
<a href="${변수명}"></a>
<c:redirect>
는 response.redirect()
코드를 대체하는 태그로, 지정된 페이지로 리다이렉트 합니다. url과 마찬가지로 파라미터 전달이 가능합니다.
<c:redirect url="리다이렉트할 url">
<c:param name="" value="" />
</c:redirect>
<c:import>
는 외부 자원을 현재 JSP 페이지에 import 하는 경우에 사용합니다.
<c:import url="import 자원 경로" [var="변수명" encoding="인코딩" scope=""] />
<c:out>
은 화면 출력을 하는 태그입니다.
<c:out value="출력값" default="기본값" [escapeXml="true/false"] />
escapeXml
은 escape 문자를 변환할지 여부를 결정하는 옵션으로 기본값으로 true를 갖습니다.
<c:forTokens>
는 구분자를 이용해서 문자열을 분리하는 태그입니다.
<c:forTokens var="변수명" items="분할할 객체" delims="구분자"></c:forTokens>
<c:catch>
는 예외 처리에 사용되는 태그입니다.
<c:catch var="변수명">
예외가 발생할 수도 있는 코드
</c:catch>
아래와 같은 방식으로 사용하게 됩니다.
<c:catch var="err">
(예외 발생 코드)
<c:out value="${err}" />
</c:catch>