[JSTL] Core 태그 라이브러리

Bam·2024년 5월 27일
0

Spring

목록 보기
40/49
post-thumbnail

Core 태그 라이브러리

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>은 변수를 사용할 수 있도록 변수를 지정하는 태그입니다.

<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>은 선언했던 변수를 제거하는데 사용하는 태그입니다.

<c:remove var="변수명" [scope=""] />

위 코드에 <c:remove>태그만 추가해보고 실행해보겠습니다.

<c:set var="str" value="Hello JSTL" scope="page"/>
<c:remove var="str" />


제어구문

<c:if>

<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>

<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>는 반복문을 수행하기 위한 태그입니다.

<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>


URL

<c:url>

<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>

<c:redirect>response.redirect() 코드를 대체하는 태그로, 지정된 페이지로 리다이렉트 합니다. url과 마찬가지로 파라미터 전달이 가능합니다.

<c:redirect url="리다이렉트할 url">
	<c:param name="" value="" />
</c:redirect>

<c:import>

<c:import>는 외부 자원을 현재 JSP 페이지에 import 하는 경우에 사용합니다.

<c:import url="import 자원 경로" [var="변수명" encoding="인코딩" scope=""] />

기타 태그들

<c:out>

<c:out>은 화면 출력을 하는 태그입니다.

<c:out value="출력값" default="기본값" [escapeXml="true/false"] />

escapeXml은 escape 문자를 변환할지 여부를 결정하는 옵션으로 기본값으로 true를 갖습니다.

<c:forTokens>

<c:forTokens>는 구분자를 이용해서 문자열을 분리하는 태그입니다.

<c:forTokens var="변수명" items="분할할 객체" delims="구분자"></c:forTokens>

<c:catch>

<c:catch>는 예외 처리에 사용되는 태그입니다.

<c:catch var="변수명">
	예외가 발생할 수도 있는 코드
</c:catch>

아래와 같은 방식으로 사용하게 됩니다.

<c:catch var="err">
	(예외 발생 코드)
    <c:out value="${err}" />
</c:catch>

0개의 댓글

관련 채용 정보