JSTL(JSP Standard Tag Library)

JSP 확장 태그
View 내부에서 JSP code 의 사용 빈도를 줄이고 가독성을 높이기 위해 사용.


사용 전 준비해야 할 것

  • JSTL API
    http://jstl.java.net > Download > JSTL API
    javax.servlet.jsp.jstl-api-1.2.1.jar 파일 다운로드.
  • JSTL Implementation
    http://jstl.java.net > Download > JSTL Implementation
    javax.servlet.jsp.jstl-1.2.1.jar 파일 다운로드.

위 두 파일을 다운로드 받은 후, 프로젝트 폴더의 WebContent/WEB-INF/lib 폴더로 파일 복사(Copy).


태그 라이브러리 선언

<%@ taglib uri="사용할 태그 라이브러리 URI" prefix="접두사" %>


각 태그 라이브러리 별 uri

  • core : http://java.sun.com/jsp/jstl/core
  • XML : http://java.sun.com/jsp/jstl/xml
  • Internationalization : http://java.sun.com/jsp/jstl/fmt
  • SQL : http://java.sun.com/jsp/jstl/sql
  • Functions : http://java.sun.com/jsp/jstl/functions


Area Subfunction tags Prefix
Core Variable support remove, set c
Flow control choose(when, otherwise), forEach, forTokens, if
URL management import(param), redirect(param), url(param)
Miscellaneous catch, out
XML Core out, parse, set x
Flow control choose(when, otherwise), forEach, if
Transformation transform(param)
I18N Locale setLocale, requestEncoding fmt
Message formatting bundle, message(param), setBundle
Number and date formatting formatNumber, formatDate, parseDate, parseNumber, setTimeZone, timeZone
Database Setting the data source setDataSource sql
SQL query(dateParam, param), transaction, update(dateParam, param)
Functions Collection length length fn
String manipulation toUpperCase, toLowerCase, substring, substringAfter, substringBefore, trim, replace, indexOf, startsWith, endsWith, contains, containsIgnoreCase, split, join, escapeXml


JSTL Core tag


Declaration the tag library

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


<c:out>

<c:out value="출력할 값" default="기본값"/>
<c:out value="출력할 값">기본값</c:out>
value 값이 null이면 기본값 출력.


<c:set>

변수를 생성하거나, 기존 변수의 값을 덮어쓸 때 사용. 생성된 변수는 보관소에 저장됨.

// value 속성을 사용하여 값 설정
<c:set var="변수명" value="값" scope="page|request|session|application"/>

// tag contents를 사용하여 값 설정
<c:set var="변수명 scope="page|request|session|application">값</c:set>

scope 속성을 생략하면 JspContext(page)에 보관됨.

객체의 프로퍼티 값 설정
<c:set target="${객체명}" property="프로퍼티명" value="값"/>
이 때 해당 프로퍼티의 세터의 리턴 타입이 void이어야 함.


<c:remove>

set 태그와 반대로, 보관소에 저장된 값을 제거.

// value 속성을 사용하여 값 설정
<c:remove var="변수명" scope="page|request|session|application"/>


<c:if>

test 속성 값이 참이면, 구문 실행.

<c:if test="조건" var="변수명" scope="page|request|session|application">
조건이 참일 때 실행할 구문
</c:if>


<c:choose>

다른 언어의 switch와 유사.

<c:choose>
  <c:when test="참 거짓 값"></c:when>
  <c:when test="참 거짓 값"></c:when>
  ...
  <c:otherwise></otherwise>
</c:choose>


<c:forEach>

반복적인 작업 수행.

<c:forEach var="변수명" items="목록데이터" begin="시작인덱스" end="종료인덱스">
반복 수행할 작업
</c:forEach>

items 속성의 값으로 다음의 값이 올 수 있음.

  • 배열
  • java.util.Collection 구현체 (ArrayList, LinkedList, Vector, EnumSet…)
  • java.util.Iterator 구현체
  • java.util.Enumeration 구현체
  • java.util.Map 구현체
  • Comma(,) 구분자로 나열된 문자열


<c:forTokens>

문자열을 특정 구분자(delemeter)로 분리하여 반복작업 수행

<c:forTokens var="item" items="문자열변수" delims="구분자">
반복 수행할 작업 내용
</c:forTokens>


<c:url>

매개변수를 포함한 URL을 만들 때 사용.

<c:url var="url이름" value="url">
  <c:param name="매개변수 이름 1" value="매개변수 값"/>
  <c:param name="매개변수 이름 2" value="매개변수 값"/>
  ...
</c:url>


<c:import>

해당 url의 응답 결과를 가져옴.

<c:import url="URL 주소"/>


<c:redirect>

HttpServletResponse의 sendRedirect() 호출

<c:redirect url="redirect 할 url"/>