Contents
see List작성일 2015. 10. 12.
JSTL 숫자 포맷팅 완벽 가이드
JSTL fmt 태그를 사용한 숫자, 날짜, 금액 포맷팅 방법입니다. 천 단위 콤마, 소수점, 통화 등 다양한 포맷을 다룹니다.
1. 기본 설정
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>2. 숫자 포맷팅 (formatNumber)
<!-- 천 단위 콤마 -->
<fmt:formatNumber value="${price}" pattern="#,###"/>
<!-- 결과: 1,234,567 -->
<!-- 소수점 2자리 -->
<fmt:formatNumber value="${rate}" pattern="#,##0.00"/>
<!-- 결과: 1,234.56 -->
<!-- 퍼센트 -->
<fmt:formatNumber value="${percent}" type="percent"/>
<!-- 0.85 → 85% -->
<!-- 통화 -->
<fmt:formatNumber value="${amount}" type="currency" currencySymbol="₩"/>
<!-- 결과: ₩1,234,567 -->3. 날짜 포맷팅 (formatDate)
<!-- 기본 날짜 -->
<fmt:formatDate value="${date}" pattern="yyyy-MM-dd"/>
<!-- 결과: 2024-01-15 -->
<!-- 날짜 + 시간 -->
<fmt:formatDate value="${datetime}" pattern="yyyy-MM-dd HH:mm:ss"/>
<!-- 결과: 2024-01-15 14:30:25 -->
<!-- 한글 날짜 -->
<fmt:formatDate value="${date}" pattern="yyyy년 MM월 dd일 (E)"/>
<!-- 결과: 2024년 01월 15일 (월) -->
<!-- 시간만 -->
<fmt:formatDate value="${time}" pattern="a hh:mm"/>
<!-- 결과: 오후 02:30 -->4. 문자열을 날짜로 파싱
<!-- 문자열 → 날짜 객체 -->
<fmt:parseDate value="2024-01-15" pattern="yyyy-MM-dd" var="parsedDate"/>
<fmt:formatDate value="${parsedDate}" pattern="yyyy년 MM월 dd일"/>
<!-- 숫자 파싱 -->
<fmt:parseNumber value="1,234,567" pattern="#,###" var="parsedNum"/>
결과: ${parsedNum}5. 주요 패턴 문자
| 문자 | 의미 | 예시 |
|---|---|---|
| # | 숫자 (없으면 생략) | #,### → 1,234 |
| 0 | 숫자 (없으면 0) | 0000 → 0012 |
| . | 소수점 | #.## → 12.34 |
| , | 천 단위 구분 | #,### → 1,234 |
| yyyy | 년도 4자리 | 2024 |
| MM | 월 2자리 | 01 |
| dd | 일 2자리 | 15 |
| HH | 시간 24시간 | 14 |
| hh | 시간 12시간 | 02 |
| mm | 분 | 30 |
| ss | 초 | 25 |
| E | 요일 | 월 |
6. 실전 예시
<!-- 주문 금액 표시 -->
<td><fmt:formatNumber value="${order.amount}" pattern="#,###"/>원</td>
<!-- 주문 일시 -->
<td><fmt:formatDate value="${order.orderDate}" pattern="yyyy.MM.dd HH:mm"/></td>
<!-- 할인율 -->
<span><fmt:formatNumber value="${item.discount}" type="percent" maxFractionDigits="0"/></span>
<!-- 상품 가격 (0원이면 무료) -->
<c:choose>
<c:when test="${product.price == 0}">무료</c:when>
<c:otherwise>
<fmt:formatNumber value="${product.price}" pattern="#,###"/>원
</c:otherwise>
</c:choose>7. 로케일 설정
<!-- 한국어 로케일 -->
<fmt:setLocale value="ko_KR"/>
<!-- 미국 통화 -->
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${amount}" type="currency"/>
<!-- 결과: $1,234.56 -->html
| No | 작성일 | Title |
|---|---|---|
| 3364 | 2026. 08. 16. | HTML 폼 오류를 누구나 이해하게 만드는 방법: label·aria-describedby·aria-live 실전 가이드 |
| 3332 | 2026. 08. 07. | CSS @layer로 스타일 충돌 줄이기: 대규모 웹 프로젝트 우선순위 설계 가이드 |
| 3300 | 2026. 07. 30. | CSS Container Query 실전 적용: 컴포넌트가 놓인 영역에 맞춰 반응형 만들기 |
| 3269 | 2026. 07. 22. | 접근성 있는 모달 만들기: HTML dialog와 포커스 관리 실전 가이드 |
| 3241 | 2026. 07. 14. | 반응형 이미지 최적화: picture·srcset·sizes로 모바일 전송량 줄이기 |
| 3186 | 2026. 07. 05. | HTML Popover API로 자바스크립트 드롭다운 메뉴 줄이기 |
| 3144 | 2026. 06. 27. | CSS 컨테이너 쿼리 운영 가이드: 화면이 아니라 컴포넌트 폭에 맞춰 레이아웃 바꾸기 |
| 3088 | 2026. 06. 19. | 접근성 있는 모달 창 구현: dialog, focus, 닫기 동작을 함께 설계하기 |
| 2999 | 2026. 06. 11. | HTML 폼 검증 운영 가이드: 브라우저 기본 검증과 서버 검증을 함께 설계하기 |
| 2943 | 2026. 06. 03. | CSS 컨테이너 쿼리 실전 적용: 화면이 아니라 컴포넌트 너비에 맞춰 카드 레이아웃 바꾸기 |