JSTL 이란?
스크립틀릿을 사용하지 않고도 제어문, 반복문 등을 처리해주는 태그를 모아 표준으로 만든 라이브러리.
JSTL을 사용하면 스크립트릿 없이 태그만으로 작성할 수 있다.
JSTL 형식
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="JSTL사용시 태그 앞에 붙일 접두어" uri="태그 라이브러리 URI 식별자"%>
1. 코어(Core) 태그 - 변수 선언, 조건문, 반복문 등 기본이 되는 태그
set - EL 에서 사용할 변수를 설정
<c:set var="변수명" value="값" scope="영역" />
<c:set target="var로 설정한 변수명" property="객체의 속성명" value="속성값" />
remove - 설정한 변수를 제거
<c:remove var="변수명" scope="영역" />
if - 단일 조건문을 주로 처리. else 문은 없음
<c:if test="조건" var="변수명" scope="영역">
조건이 true 일 때 출력할 문장
</c:if>
choose - 다중 조건을 처리할 때 사용. 하위에 when~otherwise 태그가 있음
<c:choose>
<c:when test="조건1">조건1을 만족하는 경우</c:when>
<c:when test="조건2">조건2을 만족하는 경우</c:when>
<c:otherwise>아무 조건도 만족하지 않는 경우</c:otherwise>
</c:choose>
forEach - 반복문을 처리할 때 사용
<c:forEach var="변수명" begin="시작값" end="마지막값" step="증가값" />
<c:forEach var="변수명" items="컬렉션 혹은 배열" />
forTokens - 구분자로 분리된 각각의 토큰을 처리할 때 사용
<c:forTokens items="문자열" delims="문자열 구분자" var="변수명" />
import - 외부 페이지를 삽입할 때 사용
<c:import url="페이지 경로, URL" scope="영역" />
<c:import url="페이지 경로, URL" var="변수명" scope="영역" />
${ 변수명 }
<c:import url="페이지 경로, URL?매개변수1=값1" >
<c:param name="매개변수2" value="값2" />
</c:import>
redirect - 지정한 경로로 이동
<c:redirect url="이동할 경로 및 URL" />
url - 경로를 설정할 때 사용
<c:url value="설정한 경로" scope="영역" var="변수명" />
${ 변수명 } //원하는 위치에 URL 삽입
out - 내용을 출력할 때 사용
<c:out value="출력할 변수" default="기본값" escapeXml="특수문자 처리 유무" />
catch - 예외 처리에 사용
<c:catch var="변수명">
실행코드
</c:catch>
2. 국제화(Formatting) 태그 - 국가별로 다양한 언어, 날짜, 시간, 숫자 형식을 설정할 때 사용
formatNumber - 숫자 포맷을 설정
parseNumber - 문자열을 숫자 포맷으로 변환
formatDate - 날짜나 시간의 포맷을 설정
parseDate - 문자열을 날짜 포맷으로 변환
setTimeZone - 시간대 설정 정보를 변수에 저장
timeZone - 시간대를 설정
setLocale - 통화 기호나 시간대를 설정한 지역에 맞게 표시
requestEncoding - 요청 매개변수의 문자 셋을 설정
예제) 숫자 포멧팅 및 파싱 태그 사용하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head><title>JSTL - fmt 1</title></head>
<body>
<h4>숫자 포맷 설정</h4>
<c:set var="number1" value="12345" />
콤마 O : <fmt:formatNumber value="${ number1 }" /><br />
콤마 X : <fmt:formatNumber value="${ number1 }" groupingUsed="false" /><br />
<fmt:formatNumber value="${number1 }" type="currency" var="printNum1" />
통화기호 : ${ printNum1 } <br />
<fmt:formatNumber value="0.03" type="percent" var="printNum2" />
퍼센트 : ${ printNum2 }
<h4>문자열을 숫자로 변경</h4>
<c:set var="number2" value="6,789.01" />
<fmt:parseNumber value="${ number2 }" pattern="00,000.00" var="printNum3" />
소수점까지 : ${ printNum3 } <br />
<fmt:parseNumber value="${ number2 }" integerOnly="true" var="printNum4" />
정수 부분만 : ${ printNum4 }
<c:set var="today" value="<%= new java.util.Date() %>" />
<h4>날짜 포맷</h4>
full : <fmt:formatDate value="${ today }" type="date" dateStyle="full"/> <br />
short : <fmt:formatDate value="${ today }" type="date" dateStyle="short"/> <br />
long : <fmt:formatDate value="${ today }" type="date" dateStyle="long"/> <br />
default : <fmt:formatDate value="${ today }" type="date" dateStyle="default"/>
<h4>시간 포맷</h4>
full : <fmt:formatDate value="${ today }" type="time" timeStyle="full"/> <br />
short : <fmt:formatDate value="${ today }" type="time" timeStyle="short"/> <br />
long : <fmt:formatDate value="${ today }" type="time" timeStyle="long"/> <br />
default : <fmt:formatDate value="${ today }" type="time" timeStyle="default"/>
<h4>날짜/시간 표시</h4>
<fmt:formatDate value="${ today }" type="both" dateStyle="full" timeStyle="full"/>
<br />
<fmt:formatDate value="${ today }" type="both" pattern="yyyy-MM-dd hh:mm:ss"/>
<h4>타임존 설정</h4>
<fmt:timeZone value="GMT">
<fmt:formatDate value="${ today }" type="both" dateStyle="full" timeStyle="full"/>
<br />
</fmt:timeZone>
<fmt:timeZone value="America/Chicago">
<fmt:formatDate value="${ today }" type="both" dateStyle="full" timeStyle="full"/>
</fmt:timeZone>
<h4>로케일 설정</h4>
<c:set var="today" value="<%= new java.util.Date() %>"/>
한글로 설정 : <fmt:setLocale value="ko_kr" />
<fmt:formatNumber value="10000" type="currency" /> /
<fmt:formatDate value="${ today }" /><br />
일어로 설정 : <fmt:setLocale value="ja_JP" />
<fmt:formatNumber value="10000" type="currency" /> /
<fmt:formatDate value="${ today }" /><br />
영어로 설정 : <fmt:setLocale value="en_US" />
<fmt:formatNumber value="10000" type="currency" /> /
<fmt:formatDate value="${ today }" /><br />
</body>
</html>
결과
댓글 없음:
댓글 쓰기