2022년 7월 18일 월요일

JSP 9강 - JSP 표준 태그 라이브러리(JSTL)

 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>

결과



댓글 없음:

댓글 쓰기