반응형
JSTL(JavaServer Pages Standard Tag Library)은 JSP에서 자주 사용하는 기능을 쉽게 처리할 수 있도록 제공되는 태그 라이브러리입니다. JSTL은 웹 개발자가 Java 코드를 직접 사용하지 않고도 효율적이고 유지보수 가능한 JSP 페이지를 작성할 수 있게 도와줍니다. 이 글에서는 JSTL의 종류와 각 태그의 사용법을 자세히 설명하겠습니다.
1. JSTL이란?
JSTL의 주요 목적
- JSP 페이지에서 자주 사용되는 로직을 표준화된 태그로 제공.
- Java 코드를 최소화하여 JSP 파일의 가독성과 유지보수성 향상.
- 조건문, 반복문, 포맷팅, 데이터베이스 접근 등 다양한 기능 지원.
JSTL의 주요 기능 영역
JSTL은 기능에 따라 다음과 같이 5가지 라이브러리로 구분됩니다:
- Core 태그 라이브러리 (
c
): 조건문, 반복문, 변수 설정 등 일반적인 태그 제공. - Format 태그 라이브러리 (
fmt
): 숫자, 날짜 포맷팅 및 국제화 지원. - SQL 태그 라이브러리 (
sql
): 데이터베이스 작업을 위한 태그 제공. - XML 태그 라이브러리 (
x
): XML 데이터 처리 및 XPath 지원. - Function 태그 라이브러리 (
fn
): 문자열 조작을 위한 함수 제공.
2. JSTL 사용 준비
JSTL 라이브러리 추가
JSTL을 사용하려면 JSP 프로젝트에 JSTL 라이브러리를 추가해야 합니다.
- Maven 프로젝트
pom.xml
에 다음 의존성을 추가:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
- JAR 파일 추가
Maven을 사용하지 않는 경우, 다음 JAR 파일을 프로젝트의/WEB-INF/lib
에 추가:
jstl.jar
standard.jar
3. JSTL 태그의 종류와 사용법
1) Core 태그 라이브러리 (c
)
Core 태그는 JSTL에서 가장 널리 사용되는 태그 라이브러리로, JSP에서 반복문, 조건문, 변수 설정 등의 기능을 제공합니다.
사용하려면 JSP 파일 상단에 다음과 같이 태그라이브러리를 선언합니다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
주요 Core 태그와 사용법
<c:set>
: 변수를 설정하거나 값을 저장.<c:set var="message" value="Hello, JSTL!" /> <p>${message}</p>
<c:if>
: 조건문 처리.<c:if test="${user != null}"> <p>Welcome, ${user.name}!</p> </c:if>
<c:choose>
: 다중 조건 처리 (if-else 구조).<c:choose> <c:when test="${user.role == 'admin'}"> <p>Welcome, Admin!</p> </c:when> <c:otherwise> <p>Welcome, User!</p> </c:otherwise> </c:choose>
<c:forEach>
: 반복문 처리.<c:forEach var="item" items="${items}"> <p>${item}</p> </c:forEach>
<c:forTokens>
: 문자열을 구분자로 나누어 반복.<c:forTokens var="token" items="a,b,c,d" delims=","> <p>${token}</p> </c:forTokens>
<c:remove>
: 변수 제거.<c:remove var="message" />
2) Format 태그 라이브러리 (fmt
)
Format 태그는 국제화(i18n)와 포맷팅을 지원합니다.
사용하려면 다음을 선언:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
주요 Format 태그와 사용법
<fmt:formatNumber>
: 숫자 포맷팅.<fmt:formatNumber value="1234567.89" type="currency" />
<fmt:formatDate>
: 날짜 포맷팅.<fmt:formatDate value="${currentDate}" pattern="yyyy-MM-dd" />
<fmt:message>
: 메시지 번역.<fmt:message key="greeting" />
<fmt:setLocale>
: 로케일 설정.<fmt:setLocale value="en_US" />
3) SQL 태그 라이브러리 (sql
)
SQL 태그는 데이터베이스 작업을 지원합니다.
사용하려면 다음을 선언:
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
주요 SQL 태그와 사용법
<sql:setDataSource>
: 데이터베이스 연결 설정.<sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/testdb" user="root" password="password" />
<sql:query>
: 데이터 조회.<sql:query dataSource="${db}" var="result"> SELECT * FROM users </sql:query> <c:forEach var="row" items="${result.rows}"> <p>${row.name}</p> </c:forEach>
<sql:update>
: 데이터 삽입, 업데이트, 삭제.<sql:update dataSource="${db}"> INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com') </sql:update>
4) XML 태그 라이브러리 (x
)
XML 태그는 XML 데이터를 처리합니다.
사용하려면 다음을 선언:
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
주요 XML 태그와 사용법
<x:parse>
: XML 데이터를 파싱.<x:parse var="xmlData"> <users> <user> <name>John</name> </user> </users> </x:parse>
<x:out>
: XPath 표현식으로 XML 데이터를 출력.<x:out select="$xmlData/users/user/name" />
5) Function 태그 라이브러리 (fn
)
Function 태그는 문자열 관련 작업을 지원합니다.
사용하려면 다음을 선언:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
주요 Function 태그와 사용법
fn:length
: 문자열 또는 컬렉션의 길이 반환.<p>${fn:length('Hello')}</p>
fn:contains
: 특정 문자열 포함 여부 확인.<p>${fn:contains('Hello World', 'World')}</p>
fn:replace
: 문자열 치환.<p>${fn:replace('Hello World', 'World', 'JSTL')}</p>
4. JSTL의 장점과 단점
장점
- Java 코드 제거: JSP에서 비즈니스 로직 제거로 가독성 향상.
- 표준화: 다양한 웹 컨테이너에서 동일하게 동작.
- 국제화: 다국어 지원 기능 내장.
단점
- 복잡한 로직 처리 한계: 복잡한 로직은 Java 클래스에서 처리해야 함.
- 의존성: JSTL 라이브러리와 태그 선언 필요.
5. 결론
JSTL은 JSP 개발의 생산성과 유지보수성을 크게 향상시킬 수 있는 강력한 도구입니다. Core, Format, SQL, XML, Function 태그 등 다양한 기능을 제공하며, 이를 통해 반복 작업을 줄이고 코드의 가독성을 높일 수 있습니다.
반응형
'개발 > 기타' 카테고리의 다른 글
Spring 태그 라이브러리(Spring Tag Library)란? (0) | 2025.01.15 |
---|---|
EL(Expression Language) 태그의 종류와 사용법 (0) | 2025.01.15 |
하나의 서버에서 여러 사이트 간 데이터 조회, 수정, 등록 구현 방법 (0) | 2025.01.14 |
다양한 DB의 종류와 장점 및 단점 (0) | 2025.01.14 |
리눅스 명령어 총정리: 설명과 예제 (0) | 2025.01.14 |