JSTL

2025. 3. 8. 22:22·개발/JSTL
목차
  1. 11. JSTL (JSP Standard Tag Library)

11. JSTL (JSP Standard Tag Library)

11.1 JSTL이란?

JSTL(JSP Standard Tag Library)은 JSP 페이지에서 자주 사용되는 기능들을 커스텀 태그(Custom Tag) 형태로 제공하는 라이브러리. JSTL을 사용하면 스크립틀릿(<% ... %>)과 표현식(<%= ... %>)을 사용하지 않고도, XML 형식의 태그를 이용하여 조건 처리, 반복 처리, 데이터 포맷팅, 국제화, XML 처리, 데이터베이스 연동 등 다양한 기능을 구현할 수 있다.

JSTL의 장점:

  • 코드 간결성: Java 코드를 직접 작성하는 대신, 간결한 태그를 사용하여 JSP 코드를 깔끔하게 유지할 수 있다.
  • 가독성 향상: XML 형식의 태그는 HTML과 유사하여 가독성이 좋다.
  • 재사용성: 공통적인 기능을 태그로 제공하므로, 여러 JSP 페이지에서 재사용할 수 있다.
  • 유지보수 용이: 코드 수정 및 관리가 용이.
  • 표현 로직과 비즈니스 로직 분리: JSP 페이지를 View 역할에 집중시키고, 비즈니스 로직은 Java 클래스(Model)에서 처리하도록 유도하여 MVC 패턴 구현에 적합.
  • 표준화: JSTL은 Java EE(Enterprise Edition) 표준 스펙의 일부이므로, 호환성이 좋다.

11.2 JSTL 사용 설정

JSTL을 사용하려면 다음 두 가지 작업이 필요.

  1. JSTL 라이브러리 추가: 

Maven/Gradle : 프로젝트의 의존성 관리 도구(Maven, Gradle 등)를 사용하여 JSTL 라이브러리를 추가.

 
 
Maven (pom.xml)
dependencies {
    implementation 'javax.servlet:jstl:1.2'
    // https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl
	runtimeOnly group: 'org.apache.taglibs', name: 'taglibs-standard-impl', version: '1.2.5'
}

 

 

Gradle (build.gradle)
 
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>  </dependency>

<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-impl</artifactId>
    <version>1.2.5</version>
    <scope>runtime</scope>
</dependency>
 

  

  • 직접 다운로드: JSTL 구현체(예: Apache Taglibs Standard)의 JAR 파일을 다운로드하여 프로젝트의 WEB-INF/lib 디렉토리에 추가.
  1. JSP 페이지에서 taglib 지시어 사용:
    • JSP 페이지 상단에 <%@ taglib ... %> 지시어를 사용하여 사용할 JSTL 라이브러리를 선언.
    • prefix: 태그 라이브러리의 접두어 (예: c, fmt, fn)
    • uri: 태그 라이브러리의 URI
    Java
     
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

11.3 코어(Core) 태그 (<c: ... >)

Core 태그는 변수 관리, 흐름 제어(조건문, 반복문), URL 처리 등 가장 기본적인 기능을 제공.

태그설명
<c:set> 변수 선언 및 값 할당. var, value, scope(page, request, session, application), target, property 속성 사용.
<c:out> 값 출력. value, escapeXml(HTML 이스케이프 여부, 기본값 true), default 속성 사용.
<c:remove> 변수 제거. var, scope 속성 사용.
<c:if> 조건문(if). test 속성에 조건식을 지정.
<c:choose> 다중 조건문(switch-case). <c:when>(조건), <c:otherwise>(기본값) 태그와 함께 사용.
<c:forEach> 반복문(for, for-each). var(반복 변수), items(반복 대상), begin, end, step(범위/증가값), varStatus(반복 상태 변수: index, count, first, last) 속성 사용.
<c:forTokens> 문자열을 구분자로 분리하여 반복. items(문자열), delims(구분자), var(각 토큰 변수) 속성 사용.
<c:import> 외부 URL의 내용을 가져와 현재 페이지에 포함하거나 변수에 저장. url, var, scope, charEncoding 속성 사용.
<c:redirect> 지정된 URL로 리다이렉트. url, context 속성 사용. <c:param> 태그를 사용하여 파라미터 추가 가능.
<c:url> URL 생성. <c:param> 태그와 함께 사용하여 쿼리 파라미터 추가. value, var, scope, context 속성 사용.
<c:param> <c:url>, <c:redirect>, <c:import> 등에서 URL 파라미터 추가. name, value 속성 사용.
<c:catch> 예외 처리. var 속성에 예외 객체를 저장할 변수 이름 지정.
 

11.4 국제화(Formatting) 태그 (<fmt: ... >)

Formatting 태그는 숫자, 날짜, 시간 형식 지정, 국제화(i18n, 여러 언어 지원) 관련 기능을 제공.

태그설명
<fmt:formatNumber> 숫자 형식 지정. value, type(number, currency, percent), pattern, currencyCode, currencySymbol, groupingUsed, maxIntegerDigits, minIntegerDigits, maxFractionDigits, minFractionDigits 속성 사용.
<fmt:formatDate> 날짜/시간 형식 지정. value, type(date, time, both), dateStyle, timeStyle, pattern, timeZone 속성 사용.
<fmt:timeZone> 시간대 설정. value 속성에 시간대 ID 지정.
<fmt:setTimeZone> 시간대를 변수에 저장. value, var, scope 속성 사용.
<fmt:bundle> 리소스 번들(properties 파일) 로드. basename 속성에 리소스 번들 기본 이름 지정.
<fmt:setBundle> 리소스 번들을 변수에 저장. basename, var, scope 속성 사용.
<fmt:message> 리소스 번들에서 메시지 가져오기(국제화). key, bundle, var, scope 속성 사용. <fmt:param> 태그를 사용하여 파라미터 전달 가능.
<fmt:requestEncoding> 요청 데이터의 문자 인코딩을 설정합니다. value속성을 사용하여 설정할 인코딩을 지정합니다.
 

 

저작자표시 비영리 변경금지 (새창열림)

'개발 > JSTL' 카테고리의 다른 글

JSTL 국제화 태그  (0) 2025.03.08
JSTL 코어태그  (0) 2025.03.08
  1. 11. JSTL (JSP Standard Tag Library)
'개발/JSTL' 카테고리의 다른 글
  • JSTL 국제화 태그
  • JSTL 코어태그
함수형 인간
함수형 인간
잘 까먹는 개발자의 두뇌 확장 장치
  • 함수형 인간
    개발 기록 노트
    함수형 인간
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 글 목록 (84)
      • 기타 (1)
      • 개발 (82)
        • Java (6)
        • Javascript (1)
        • Spring (20)
        • jQuery (0)
        • Git (0)
        • servlet (11)
        • JSP (6)
        • HTML (0)
        • CSS (10)
        • SQL (9)
        • JSTL (3)
        • Mybatis (4)
        • Design Patterns (0)
        • HTTP (2)
        • Devtools (0)
        • IntelliJ (5)
        • JDBC (1)
        • Lombok (3)
        • Logging (1)
      • 책 리뷰 (0)
  • hELLO· Designed By정상우.v4.10.3
함수형 인간
JSTL
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.