JSTL (JSP 표준 태그 라이브러리)
JSTL 개요 (JSTL Overview)
JSTL (JavaServer Pages Standard Tag Library)은 JSP 페이지에서 사용되는 커먼 태스크를 단순화하고 표준화하는 데 도움을 주는 태그 라이브러리입니다. JSTL은 데이터 처리, 포맷팅, 조건문, 반복문 등을 위한 다양한 태그를 제공합니다. 이를 통해 JSP 코드의 가독성을 높이고 유지보수를 쉽게 할 수 있습니다.
JSTL 설치 및 설정 (JSTL Installation and Configuration)
JSTL을 사용하려면 JSTL 라이브러리를 프로젝트에 추가해야 합니다. 일반적으로 Apache Taglibs에서 JSTL 라이브러리를 다운로드하거나 Maven을 사용하는 경우 pom.xml
에 의존성을 추가합니다.
설치 단계:
- JSTL 라이브러리 다운로드: Apache Taglibs에서 JSTL 라이브러리를 다운로드합니다.
- 라이브러리 추가: 다운로드한 JSTL JAR 파일을 프로젝트의
WEB-INF/lib
디렉토리에 추가합니다. - 태그 라이브러리 선언: JSP 파일 상단에 JSTL 태그 라이브러리를 선언합니다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
코어 태그 (Core Tags)
JSTL 코어 태그는 조건문, 반복문, URL 처리 등을 포함한 일반적인 태스크를 처리합니다.
주요 코어 태그:
- : 값 출력
- : 조건문
- , , : 복합 조건문
- : 반복문
- : 토큰 단위 반복
- : 변수 설정
- : 변수 제거
- : 예외 처리
- : URL 콘텐츠 임포트
- : URL 리라이팅
- : 페이지 리디렉션
- : URL 파라미터 추가
예제:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!-- 변수 설정 --> <c:set var="name" value="홍길동" /> <!-- 조건문 --> <c:if test="${name == '홍길동'}"> <p>안녕하세요, ${name}님!</p> </c:if> <!-- 반복문 --> <ul> <c:forEach var="item" items="${itemList}"> <li>${item}</li> </c:forEach> </ul>
포맷 태그 (Format Tags)
포맷 태그는 날짜, 숫자, 통화 등을 포맷팅하는 데 사용됩니다.
주요 포맷 태그:
- : 숫자 포맷팅
- : 날짜 포맷팅
- : 문자열을 숫자로 파싱
- : 문자열을 날짜로 파싱
- : 리소스 번들 설정
- : 리소스 번들 메시지 출력
- : 로케일 설정
- : 시간대 설정
예제:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <!-- 숫자 포맷팅 --> <fmt:formatNumber value="1234567.89" type="currency" /> <!-- 날짜 포맷팅 --> <fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" />
SQL 태그 (SQL Tags)
SQL 태그는 데이터베이스 쿼리를 JSP 페이지에서 직접 수행하는 데 사용됩니다.
주요 SQL 태그:
- : 데이터 소스 설정
- : 데이터베이스 쿼리 실행
- : 데이터베이스 업데이트 실행
- : 쿼리 파라미터 설정
- : 날짜 파라미터 설정
- : 트랜잭션 처리
예제:
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <!-- 데이터 소스 설정 --> <sql:setDataSource var="db" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb" user="root" password="password" /> <!-- 데이터베이스 쿼리 실행 --> <sql:query dataSource="${db}" var="result"> SELECT * FROM users </sql:query> <!-- 쿼리 결과 출력 --> <table> <c:forEach var="row" items="${result.rows}"> <tr> <td>${row.id}</td> <td>${row.name}</td> </tr> </c:forEach> </table>
XML 태그 (XML Tags)
XML 태그는 XML 데이터를 처리하는 데 사용됩니다.
주요 XML 태그:
- : XML 파싱
- : XML 데이터 출력
- : XML 노드 반복
- : XML 조건문
- , , : XML 복합 조건문
- : XML 변수 설정
- : XML 변수 제거
예제:
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> <!-- XML 파싱 --> <x:parse var="doc" xml="<books><book><title>JSP</title></book></books>" /> <!-- XML 데이터 출력 --> <x:out select="$doc/books/book/title" />
함수 태그 (Function Tags)
함수 태그는 문자열 처리 등의 공통 함수들을 제공합니다.
주요 함수 태그:
- fn:contains: 문자열 포함 여부 확인
- fn:containsIgnoreCase: 대소문자 무시하고 문자열 포함 여부 확인
- fn:startsWith: 문자열 시작 여부 확인
- fn:endsWith: 문자열 끝 여부 확인
- fn:substring: 문자열 부분 추출
- fn:substringAfter: 특정 문자열 이후 부분 추출
- fn:substringBefore: 특정 문자열 이전 부분 추출
- fn:join: 문자열 배열을 하나의 문자열로 결합
- fn:split: 문자열을 배열로 분리
- fn:indexOf: 문자열의 인덱스 위치 반환
- fn:length: 문자열의 길이 반환
- fn:escapeXml: XML 특수문자 이스케이프 처리
예제:
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <!-- 문자열 포함 여부 확인 --> <c:if test="${fn:contains(name, '길동')}"> <p>이름에 '길동'이 포함되어 있습니다.</p> </c:if> <!-- 문자열 부분 추출 --> <p>이름 일부: ${fn:substring(name, 1, 3)}</p>