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}" />'IT정리 > java' 카테고리의 다른 글
| Spring Boot & JPA 핵심 어노테이션 정리 (1) | 2025.10.15 |
|---|---|
| 로그인 시 ID/비밀번호 안전하게 암호화하는 방법 (feat. 일회용 키 & AES 암호화) (0) | 2025.03.24 |
| [카카오 지도 API] 2개 이상의 지도 추가 시 랜더링 에러 삽질기 (0) | 2025.01.11 |
| java.lang.Error: Unresolved compilation problem: 에러. 1시간의 삽질기 (0) | 2025.01.02 |