본문 바로가기

IT정리/java

JSTL 정리 - Core 태그 라이브러리

JSTL(JavaServer Pages Standard Tag Library)은 JSP(JavaServer Pages)에서 반복적인 작업을 간단하게 처리할 수 있도록 제공되는 태그 라이브러리이며 다양한 기능을 제공한다.

크게 Core, Formatting, SQL, XML, Functions로 나뉜다.

JSTL을 사용하기 위해서는 JSP 페이지에 <%@ taglib %> 지시문으로 선언하여 사용한다.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

1. Core 태그 라이브러리 (c:)

Core 태그는 JSP에서 가장 자주 사용되는 기본 기능을 제공한다.

  • <c:out>: 데이터를 출력한다.
    • value: 출력할 데이터 (EL 표현식 사용 가능).
    • default: 값이 null일 경우 출력할 기본값.
<c:out value="${text}" default="이름 없음" />
  • <c:set>: 변수를 설정한다.
    • var: 변수 이름.
    • value: 변수 값.
    • scope: 변수의 유효 범위(page, request, session, application)(defualt로 page가 설정된다).
    •  
scope 유효범위 데이터 유지 시간 주요 사용 사례
page 현재 JSP 페이지 페이지 처리 완료 시까지 임시 변수, 로컬 데이터.
request 현재 HTTP 요청 요청 처리 완료 시까지 요청 간 데이터 공유 (포워드/인클루드).
session 사용자 세션 세션 유지 기간 동안 사용자별 상태 저장 (예: 로그인 정보).
application 전체 애플리케이션 애플리케이션 종료 시까지 전역 설정, 공통 데이터.

 

<c:set var="variable" value="${value}" scope="session" />
  • <c:remove>: 변수를 제거한다.
    • var: 제거할 변수 이름.
    • scope: 제거할 변수의 범위.
<c:remove var="variable" scope="session" />
  • <c:if>: 조건부 로직을 처리한다.
    • test: 평가할 조건 (EL 표현식 사용 가능).
<c:if test="${condition}">
    실행할 내용
</c:if>
  • <c:choose>, <c:when>, <c:otherwise>: 조건 분기 로직 (switch-case와 유사).
<c:choose>
    <c:when test="${condition1}">
        조건 1이 참일 때 실행
    </c:when>
    <c:when test="${condition2}">
        조건 2가 참일 때 실행
    </c:when>
    <c:otherwise>
        모든 조건이 거짓일 때 실행
    </c:otherwise>
</c:choose>
  • <c:catch>: 예외를 처리한다.
    • <c:catch> 태그는 예외를 처리할 수 있는 블록을 제공한다.
    • 태그 내부에서 예외가 발생하면 이를 잡아서 지정된 변수에 저장할 수 있다.
    • 예외를 처리한 후 JSP 페이지의 실행이 계속된다.
<c:catch var="exceptionVar">
    <!-- 예외 발생 가능 코드 -->
</c:catch>

<c:choose>
    <c:when test="${not empty exceptionVar}">
        <!-- 예외가 발생했을 때 처리 -->
    </c:when>
    <c:otherwise>
        <!-- 정상적으로 처리될 때 -->
    </c:otherwise>
</c:choose>
  • <c:forEach>: 반복 처리를 구현한다.
    • var: 각 반복에서 사용할 변수 이름.
    • items: 반복할 컬렉션.
    • begin: 시작 인덱스.
    • end: 종료 인덱스.
    • step: 반복 간격.
<c:forEach var="item" items="${collection}">
    ${item}
</c:forEach>
  • <c:forTokens>: 문자열을 구분자로 분리하여 반복 처리한다.
    • var: 분리된 각 토큰을 저장할 변수.
    • items: 분리할 문자열.
    • delims: 구분자(하나 이상의 문자 가능).
<c:forTokens var="token" items="a,b,c" delims="," />
  • <c:import>: 다른 URL이나 파일을 가져온다.
    • url: 포함하거나 가져올 리소스의 경로 (상대 경로, 절대 경로, 또는 URL)
    • var: 가져온 데이터를 저장할 변수 이름
    • scope: 데이터를 저장할 스코프(page, request, session, application). 기본값은 page.
    • context: 컨텍스트 경로를 지정. 현재 애플리케이션 외부의 경로를 지정할 때 사용.
    • charEncoding: 가져온 리소스를 특정 문자 인코딩으로 처리할 때 사용.
<c:import url="header.jsp" />
  • <c:url>: URL을 생성한다.
<c:url var="url" value="/profile">
    <c:param name="id" value="${user.id}" />
</c:url>
<a href="${url}">프로필 보기</a>
  • <c:param>: URL에 파라미터를 추가할 수 있다.
    • name: url 키값
    • value: url 데이터값
<c:import url="header.jsp">
    <c:param name="user" value="JohnDoe" />
    <c:param name="role" value="admin" />
</c:import>
  • <c:redirect>: 클라이언트를 다른 URL로 리다이렉트한다.
    • url: 리다이렉션할 URL.
<c:redirect url="/login" />
  • <c:trim> (JSTL 2.0+): 문자열의 양쪽 공백을 제거한다.
    • value: 수정할 데이터
<c:trim value="${myString}" />