반응형

JSTL(JavaServer Pages Standard Tag Library)은 JSP에서 자주 사용하는 기능을 쉽게 처리할 수 있도록 제공되는 태그 라이브러리입니다. JSTL은 웹 개발자가 Java 코드를 직접 사용하지 않고도 효율적이고 유지보수 가능한 JSP 페이지를 작성할 수 있게 도와줍니다. 이 글에서는 JSTL의 종류와 각 태그의 사용법을 자세히 설명하겠습니다.


1. JSTL이란?

JSTL의 주요 목적

  • JSP 페이지에서 자주 사용되는 로직을 표준화된 태그로 제공.
  • Java 코드를 최소화하여 JSP 파일의 가독성과 유지보수성 향상.
  • 조건문, 반복문, 포맷팅, 데이터베이스 접근 등 다양한 기능 지원.

JSTL의 주요 기능 영역

JSTL은 기능에 따라 다음과 같이 5가지 라이브러리로 구분됩니다:

  1. Core 태그 라이브러리 (c): 조건문, 반복문, 변수 설정 등 일반적인 태그 제공.
  2. Format 태그 라이브러리 (fmt): 숫자, 날짜 포맷팅 및 국제화 지원.
  3. SQL 태그 라이브러리 (sql): 데이터베이스 작업을 위한 태그 제공.
  4. XML 태그 라이브러리 (x): XML 데이터 처리 및 XPath 지원.
  5. Function 태그 라이브러리 (fn): 문자열 조작을 위한 함수 제공.

2. JSTL 사용 준비

JSTL 라이브러리 추가

JSTL을 사용하려면 JSP 프로젝트에 JSTL 라이브러리를 추가해야 합니다.

  1. Maven 프로젝트
    pom.xml에 다음 의존성을 추가:
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
  1. 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 태그와 사용법

  1. <c:set>: 변수를 설정하거나 값을 저장.
  2. <c:set var="message" value="Hello, JSTL!" /> <p>${message}</p>
  3. <c:if>: 조건문 처리.
  4. <c:if test="${user != null}"> <p>Welcome, ${user.name}!</p> </c:if>
  5. <c:choose>: 다중 조건 처리 (if-else 구조).
  6. <c:choose> <c:when test="${user.role == 'admin'}"> <p>Welcome, Admin!</p> </c:when> <c:otherwise> <p>Welcome, User!</p> </c:otherwise> </c:choose>
  7. <c:forEach>: 반복문 처리.
  8. <c:forEach var="item" items="${items}"> <p>${item}</p> </c:forEach>
  9. <c:forTokens>: 문자열을 구분자로 나누어 반복.
  10. <c:forTokens var="token" items="a,b,c,d" delims=","> <p>${token}</p> </c:forTokens>
  11. <c:remove>: 변수 제거.
  12. <c:remove var="message" />

2) Format 태그 라이브러리 (fmt)

Format 태그는 국제화(i18n)와 포맷팅을 지원합니다.
사용하려면 다음을 선언:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

주요 Format 태그와 사용법

  1. <fmt:formatNumber>: 숫자 포맷팅.
  2. <fmt:formatNumber value="1234567.89" type="currency" />
  3. <fmt:formatDate>: 날짜 포맷팅.
  4. <fmt:formatDate value="${currentDate}" pattern="yyyy-MM-dd" />
  5. <fmt:message>: 메시지 번역.
  6. <fmt:message key="greeting" />
  7. <fmt:setLocale>: 로케일 설정.
  8. <fmt:setLocale value="en_US" />

3) SQL 태그 라이브러리 (sql)

SQL 태그는 데이터베이스 작업을 지원합니다.
사용하려면 다음을 선언:

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

주요 SQL 태그와 사용법

  1. <sql:setDataSource>: 데이터베이스 연결 설정.
  2. <sql:setDataSource var="db" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/testdb" user="root" password="password" />
  3. <sql:query>: 데이터 조회.
  4. <sql:query dataSource="${db}" var="result"> SELECT * FROM users </sql:query> <c:forEach var="row" items="${result.rows}"> <p>${row.name}</p> </c:forEach>
  5. <sql:update>: 데이터 삽입, 업데이트, 삭제.
  6. <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 태그와 사용법

  1. <x:parse>: XML 데이터를 파싱.
  2. <x:parse var="xmlData"> <users> <user> <name>John</name> </user> </users> </x:parse>
  3. <x:out>: XPath 표현식으로 XML 데이터를 출력.
  4. <x:out select="$xmlData/users/user/name" />

5) Function 태그 라이브러리 (fn)

Function 태그는 문자열 관련 작업을 지원합니다.
사용하려면 다음을 선언:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

주요 Function 태그와 사용법

  1. fn:length: 문자열 또는 컬렉션의 길이 반환.
  2. <p>${fn:length('Hello')}</p>
  3. fn:contains: 특정 문자열 포함 여부 확인.
  4. <p>${fn:contains('Hello World', 'World')}</p>
  5. fn:replace: 문자열 치환.
  6. <p>${fn:replace('Hello World', 'World', 'JSTL')}</p>

4. JSTL의 장점과 단점

장점

  1. Java 코드 제거: JSP에서 비즈니스 로직 제거로 가독성 향상.
  2. 표준화: 다양한 웹 컨테이너에서 동일하게 동작.
  3. 국제화: 다국어 지원 기능 내장.

단점

  1. 복잡한 로직 처리 한계: 복잡한 로직은 Java 클래스에서 처리해야 함.
  2. 의존성: JSTL 라이브러리와 태그 선언 필요.

5. 결론

JSTL은 JSP 개발의 생산성과 유지보수성을 크게 향상시킬 수 있는 강력한 도구입니다. Core, Format, SQL, XML, Function 태그 등 다양한 기능을 제공하며, 이를 통해 반복 작업을 줄이고 코드의 가독성을 높일 수 있습니다.

반응형

+ Recent posts