JSTL 사용하기
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"/>