본문 바로가기

개발/Web

[Java] JSP - JSTL Formatting Library / Functions Library

*  JSTL Formatting 선언 방법JSTL을 사용하고자 하는 jsp페이지 상단에 taglib지시어를 사용해서 선언함
[ 표현법 ]
<@ taglib prefix="접두어" uri="라이브러리 파일상의 uri주소">

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!-- formatting library -->
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <!-- functions library -->

 

< Formatting Library >

 

1. formatNumber 태그


숫자형 데이터의 포맷(형식)을 지정
- 표현하고자 하는 숫자 데이터의 형식을 통화기호, %등 원하는 쓰임에 맞게 지정하는 태그

[ 표현법 ]
<fmt:formatNumber value="출력할 값" groupingUsed="true/false" type="percent/currency" currencySymbol="$">
(groupingUsed, type, currencySymbole은 생략 가능한 속성)

 

=> groupingUsed : 3자리마다 ,로 구분해주는 속성. 생략 가능(기본값이 true)

=> type="percent" : 소수점을 백분율로 변경해서 보여줌

=> type="currency" : 통화(돈). 현재 내가 사용하고 있는 로컬운영체제의 정보에 따라서 단위가 정해짐

(groupingUsed 자동)

 

<!-- 테스트할 변수 생성 -->
<c:set var="num1" value="123456789" />
<c:set var="num2" value="0.56" />
<c:set var="num3" value="60000" />

num1의 경우 <br>
그냥 출력 : ${ num1 } <br>
세자리마다 구분해서 출력 : <fmt:formatNumber value="${ num1 }" /><br> 
숫자 그대로 출력 : <fmt:formatNumber value="${ num1 }" groupingUsed="false" /> <br><br>
<br>
num2의 경우 <br>
percent : <fmt:formatNumber value="${ num2 }" type="percent" /> <br><br>
<br>
num3의 경우 <br>
currency : <fmt:formatNumber value="${ num3 }" type="currency" currencySymbol="$" />

- 결과 -

 

 

2. formatDate 태그


날짜 및 시간 데이터의 포맷(형식)을 지정
단, java.util.Date클래스의 객체를 이용해야만 한다.

pattern 속성을 이용해서 디테일하게 형식을 지정할 수 있다.

반드시 dateStyle하고 timeStyle을 동일하게 맞출 필요 X

yyyy : 4자리 년도
MM : 2자리 월수
dd : 2자리 일수

E : 요일
a : 오전 / 오후

HH : 2자리 시간
mm : 2자리 분
ss : 2자리 초

 

<!-- 테스트 할 변수 만들기 -->

<c:set var="current" value="<%= new java.util.Date() %>" /> <!-- Thu Dec 15 10:12:20 KST 2022 -->

current 그냥 출력 : ${ current } <br>

<ul>
    <li>
        현재 날짜 : <fmt:formatDate value="${ current }" type="date" /> <!-- 2022. 12. 15 (년도. 월. 일) -->
    </li>

    <li>
        현재 시간 : <fmt:formatDate value="${ current }" type="time" /><!-- 오전 10:13:39 -->
    </li>

    <li>
        날짜 및 시간 : <fmt:formatDate value="${ current }" type="both" /><!-- 2022. 12. 15 오전 10:14:29 (medium) -->
    </li>

    <li>
        long : <fmt:formatDate value="${ current }" type="both" dateStyle="long" timeStyle="long" /><!-- 2022년 12월 15일 (목) 오전 10시 15분 22초 -->
    </li>

    <li>
        full : <fmt:formatDate value="${ current }" type="both" dateStyle="full" timeStyle="full" /><!-- 2022년 12월 15일 목요일 오전 10시 16분 31초 KST -->
    </li>

    <li>
        short : <fmt:formatDate value="${ current }" type="both" dateStyle="short" timeStyle="short" /><!-- 22. 12. 15 오전 10:17 -->
    </li>

    <li>
        customizing : <fmt:formatDate value="${ current }" type="both" pattern="yyyy-MM-dd(E) a HH:mm:ss" /><!-- 2022-12-15(목) 오전 10:18:37 -->
    </li>
</ul>

- 결과 -

 

 

 

 

< Functions Library >

 

 

- functions 라이브러리는 따로 태그를 제공하는 형태는 아님
- EL구문 안에서 메소드를 호출하는 형태로 사용 => 접두어:메소드명(인자값) 형식으로 사용
- 주로 문자열과 관련된 메소드들을 제공

<c:set var="str" value="How are you?" />

str : ${ str } <br>

문자열의 길이 : ${ fn:length(str) }글자 <br> 
문자열의 길이 : ${ str.length() } <br> <!-- EL구문 안에서 자바스크립트 메소드 사용 가능 -->

모두 대문자로 출력 : ${ fn:toUpperCase(str) } <br>
모두 소문자로 출력 : ${ fn:toLowerCase(str) } <br>

are의 시작 인덱스 : ${ fn:indexOf(str, 'are') }번째 <br>
<!-- 문자열에 홑따옴표 사용 가능 -->

<c:if test="${ fn:contains(str, 'are') }">
    응 있어~	
</c:if>

- 결과 -