본문 바로가기

학원/복기

[MVC] Formatter 태그 라이브러리

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>

시차가 1시간 느린 것을 확인할 수 있다

 


숫자 변환 태그

 

[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