JSTL 코어 태그란?
JSTL(JavaServer Pages Standard Tag Library)에서 코어(Core) 태그 그룹은 가장 널리 사용되는 태그 모음입니다. 변수 처리, 조건 분기, 반복문, URL 제어 등 JSP 개발에서 필수적인 기능들을 스크립틀릿 없이 깔끔하게 처리할 수 있도록 도와줍니다.
JSP에서 JSTL 코어 라이브러리를 사용하려면 다음과 같이 taglib 지시문을 페이지 상단에 추가해야 합니다.
<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
여기서 prefix는 태그를 호출할 때 사용할 접두사로, 관례상 c를 주로 사용합니다.
JSTL 코어 태그 목록
아래 표는 자주 사용되는 14가지 JSTL 코어 태그와 각각의 역할을 정리한 것입니다.
| 번호 | 태그 및 설명 |
|---|---|
| 1 | <c:out> <%= ... %>와 유사한 역할을 하지만, 표현식(Expression) 출력에 특화되어 있으며 XSS 방지를 위한 자동 이스케이프 처리도 지원합니다. |
| 2 | <c:set> 표현식의 평가 결과를 지정된 'scope'(page, request, session, application)에 저장합니다. |
| 3 | <c:remove> 스코프 변수를 제거합니다. 특정 스코프를 지정하면 해당 스코프에서만 삭제됩니다. |
| 4 | <c:catch> 태그 본문 안에서 발생하는 Throwable 예외를 잡아내고, 필요한 경우 변수에 담아 노출할 수 있습니다. |
| 5 | <c:if> 주어진 조건이 참(true)일 때에만 본문 내용을 실행하는 간단한 조건부 태그입니다. |
| 6 | <c:choose> 상호 배타적인 여러 조건 분기를 처리하기 위한 컨텍스트를 만드는 태그로, <c:when>과 <c:otherwise> 하위 태그와 함께 사용됩니다. |
| 7 | <c:when> <c:choose>의 하위 태그로, 자신의 조건이 'true'로 평가되면 본문 내용을 실행합니다. |
| 8 | <c:otherwise> <c:choose>의 하위 태그로, <c:when> 태그들 뒤에 위치하며 앞선 모든 조건이 'false'일 때만 실행됩니다. |
| 9 | <c:import> 절대 경로 또는 상대 경로의 URL 콘텐츠를 가져와 페이지에 직접 출력하거나, 'var' 속성에는 String으로, 'varReader' 속성에는 Reader로 노출합니다. |
| 10 | <c:forEach> 기본 반복(iteration) 태그로, 다양한 컬렉션 타입을 순회할 수 있으며 부분 집합(subsetting) 처리 등 다양한 기능을 지원합니다. |
| 11 | <c:forTokens> 지정한 구분자(delimiter)로 나눈 토큰들을 하나씩 순회하며 반복 처리합니다. |
| 12 | <c:param> 포함하고 있는 'import' 태그의 URL에 파라미터를 추가합니다. |
| 13 | <c:redirect> 지정한 새로운 URL로 페이지를 리다이렉트(redirect)합니다. |
| 14 | <c:url> 선택적으로 쿼리 파라미터를 포함할 수 있는 URL을 생성합니다. 세션 ID 재작성(URL rewriting)도 자동으로 처리해 줍니다. |
마무리
JSTL 코어 태그를 활용하면 JSP 코드에서 자바 코드를 크게 줄일 수 있어 가독성과 유지보수성이 크게 향상됩니다. 특히 <c:forEach>, <c:if>, <c:out>은 실무에서 가장 빈번하게 사용되므로 먼저 익혀두는 것이 좋습니다.