Formatter 태그 라이브러리
날짜와 시간 변환태그
[fmt_formatDate.jsp]
<%@page import="java.util.Date"%>
<%@ 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" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>Formatter - 날짜와 시간 변환 태그</h1>
<hr>
<!-- 서버 시스템의 현재 날짜와 시간이 저장된 Date 객체를 생성하여 스코프 객체의 속성값으로 저장 -->
<c:set var="now" value="<%=new Date() %>"/>
<!-- EL를 사용하여 Date 객체를 제공받아 출력 처리할 경우 toString() 메소드가 자동 호출 -->
<p>now = ${now }</p>
</body>
</html>

formatDate 태그
Date 객체에 저장된 날짜와 시간을 원하는 패턴의 문자열로 변환하여 제공하는 태그이다.
SimpleDateFormat 클래스와 유사한 기능을 제공한다.
- value 속성 : Date 객체를 속성값으로 설정한다. - EL을 사용하여 Date 객체를 제공받아 속성값으로 사용해도 된다.
- type 속성 : date(날짜), time(시간), both(날짜와 시간) 중 하나를 속성값으로 설정하면 된다.
→ time 속성값을 [date]로 설정한 경우 기본적으로 [yyyy.M.d] 패턴의 문자열로 변환하여 제공된다.
<p>now(날짜) = <fmt:formatDate value="${now }" type="date"/>

dateStyle 속성을 사용하여 full 또는 short 중에 하나를 속성값으로 설정할 수 있다.
dateStyle 속성값이 full인 경우 [yyyy년 M월 d일 E요일] 패턴의 문자열로 변환되어 제공된다.
dateStyle 속성값이 short인 경우 [yy.MM.d.] 패턴의 문자열로 변환되어 제공된다.
<p>now(날짜) = <fmt:formatDate value="${now }" type="date" dateStyle="full"/>
<p>now(날짜) = <fmt:formatDate value="${now }" type="date" dateStyle="short"/>

type 속성을 time 속성값으로 설정한 경우 기본적으로 [a h:mm:ss] 패턴의 문자열로 변환되어 제공한다.
<p>now(시간) = <fmt:formatDate value="${now }" type="time"/>

timeStyle 속성을 사용하여 full 또는 short 중에 하나를 속성값으로 설정할 수 있다.
timeStyle 속성값이 full인 경우 [a h시 mm분 ss초 z] 패턴의 문자열로 변환되어 제공된다.
timeStyle 속성값이 short인 경우 [a h :mm] 패턴의 문자열로 변환되어 제공된다.
<p>now(시간) = <fmt:formatDate value="${now }" type="time" timeStyle="full"/>
<p>now(시간) = <fmt:formatDate value="${now }" type="time" timeStyle="short"/>

type 속성의 속성값을 both로 설정한 경우 기본적으로 [yyyy.M.d. a h:mm:ss] 패턴의 문자열로 변환되어 제공된다.
<p>now(날짜와 시간) = <fmt:formatDate value="${now }" type="both"/>
<p>now(날짜와 시간) = <fmt:formatDate value="${now }" type="both" dateStyle="full" timeStyle="full"/>
<p>now(날짜와 시간) = <fmt:formatDate value="${now }" type="both" dateStyle="short" timeStyle="short"/>

패턴을 직접 설정
<p>now(패턴) = <fmt:formatDate value="${now }" pattern="yyyy-MM-dd HH:mm:ss"/></p>
timeZone 태그
타임존(timeZone)을 변경하는 태그이다.
- value 속성 : 변경할 타임존(대륙/시간)을 속성값으로 설정한다.
<fmt:timeZone value="Asia/Hong_Kong">
<p>홍콩의 현재 날짜와 시간 = <fmt:formatDate value="${now }" pattern="yyyy-MM-dd HH:mm:ss"/></p>
</fmt:timeZone>

숫자 변환 태그
[fmt_formatNumber.jsp]
<%@ 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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>Formatter - 숫자 변환 태그</h1>
<hr>
<c:set var="price" value="1000000000"/>
<p>가격 = ${price }원</p>
</body>
</html>

formatNumber 태그
formatNumber태그는 숫자값을 원하는 패턴의 문자열로 변환하여 제공하는 태그이다.
→ DecimalFormat 클래스와 유사한 기능을 제공한다.
- value 속성 : 숫자값을 속성값으로 설정한다. - EL을 사용하여 숫자값을 제공받아 속성값으로 사용할 수 있다.
→ 속성값으로 제공받은 값이 숫자값이 아닌 경우 NumberFormatException이 발생한다.
- type 속성 : number(숫자) 또는 currency(화폐) 중 하나를 속성값으로 설정한다.
→ type 속성을 생략한 경우 [number] 속성값을 기본값으로 사용한다.
→ type 속성값을 number로 설정한 경우 숫자 3자리마다 [ , ] 기호를 삽입한 문자열로 변환하여 제공한다.
→ type 속성값을 currency로 설정한 경우 앞부분에 화폐단위를 출력하고 숫자 3자리마다 [ , ] 기호를 삽입한 문자열로 변환하여 제공한다.
<p>가격 = <fmt:formatNumber value="${price }" type="number"/>원</p>
<p>가격 = <fmt:formatNumber value="${price }"/>원</p> <!-- type 생략 가능 -->
<p>가격 = <fmt:formatNumber value="${price }" type="currency"/></p>

setLocale 태그
setLocale은 장소를 변경하는 태그이다. 나라별로 날짜와 시간 또는 화폐단위를 변경할 떄 사용한다.
- value 속성 : 장소(언어_나라)를 속성값으로 설정한다.
<fmt:setLocale value="en_us"/>
<p>가격 = <fmt:formatNumber value="${price }" type="currency"/></p>
<fmt:setLocale value="ja_jp"/>
<p>가격 = <fmt:formatNumber value="${price }" type="currency"/></p>
<fmt:setLocale value="ko_kr"/>
<p>가격 = <fmt:formatNumber value="${price }" type="currency"/></p>

pattern 속성에 숫자값을 변환하기 위한 패턴정보를 속성값으로 설정한다.
→ 반올림하여 원하는 소숫점 자릿수만큼 출력 처리한다.
<c:set var="pi" value="3.141592"/>
<p>원주율 = ${pi }</p>
<p>원주율 = <fmt:formatNumber value="${pi }" pattern="#.##"/></p>
<p>원주율 = <fmt:formatNumber value="${pi }" pattern="#.###"/></p>

[#] 패턴문자를 사용하여 소숫점 자릿수의 값이 없으면 공백으로 표현된다.
[0] 패턴문자를 사용하면 소숫점 자릿수의 값이 없어도 0으로 표현된다.
주의) [#] 패턴문자와 [0] 패턴문자를 소숫점 자릿수로 동시에 표현하면 에러가 발생한다.
<c:set var="avg" value="70.5"/>
<p>원주율 = <fmt:formatNumber value="${avg }" pattern="#.##"/></p>
<p>원주율 = <fmt:formatNumber value="${avg }" pattern="##.00"/></p>
<!-- 에러 발생 -->
<p>원주율 = <fmt:formatNumber value="${avg }" pattern="##.#0"/></p>

'학원 > 복기' 카테고리의 다른 글
[MVC] 필터(Filter) (0) | 2023.07.16 |
---|---|
[MVC] Functions 태그 라이브러리 (0) | 2023.07.16 |
[MVC] JSTL(Java Standard Tag Library) / Core 라이브러리 (0) | 2023.07.14 |
[MVC] 커스텀 태그(Cutom Tag) (0) | 2023.07.14 |
[MVC] EL 연산자 (0) | 2023.07.13 |