본문 바로가기

개발/Java

[JAVA - WEB] JSP 표준 태그 라이브러리(JSTL) - fmt

728x90
반응형
fmt 태그 라이브러리

 

fmt 태그 라이브러리 종류는 다음과 같습니다.

 

분류 태그 기능
다국어 <fmt:setLocale> Locale(언어) 을 지정합니다.
<fmt:message> 지정한 언어에 해당하는 언어를 표시합니다.
<fmt:setBundle> 사용할 번들을 지정합니다.
<fmt:setParam> 전달할 매개변수를 지정합니다.
<fmt:requestEncoding> 요청 매개변수의 문자 인코딩을 지정합니다.
포매팅 <fmt:timeZone> 지정한 국가의 시간을 지정합니다. 태그를 열고 닫는 영역에만 적용됩니다.
<fmt:setTimeZone> 지정한 국가의 시간을 지정합니다.
<fmt:formatNumber> 표시할 숫자의 형식을 지정합니다.
<fmt:fotmatDate> 지정한 형식의 날짜를 표시합니다.

 

 

 

다국어 태그 라이브러리

 

다국어 기능을 사용하려면 미리 한글을 아스키 코드로 변환한 형태로 저장하고 있다가 요청 시 이 아스키 코드를 다시 한글 변환해서 표시합니다.

먼저 이클립스에 한글을 아스키 코드로 변환하는 기능을 제공하는 Properties Editor 플러그인을 설치합니다.

 

이클립스 상단 메뉴에서 Help - Install New Software 를 선택합니다.

 

 

Add... 을 클릭합니다.

 

 

Name 과 Location 을 입력하고 Add 를 클릭합니다.

 

 

PropertiesEditor 항목을 선택한 후 Next 를 클릭합니다.

 

 

Install Details 화면에서 Next 를 클릭합니다.

 

 

Review Licenses 화면에서 동의를 체크하고 Finish 를 클릭합니다.

 

 

재실행할지를 물어보면 Restart Now 를 클릭합니다.

 

 

 

 

 

한글 아스키 파일 생성

 

프로젝트의 src 폴더의 resource 패키지를 생성한 후 마우스 오른쪽 버튼 클릭 후 New - Other... 을 클릭합니다.

 

 

General 항목에 File 을 선택한 후 Next 를 클릭합니다.

 

 

파일 이름을 입력한 후 Finish 를 클릭합니다.

 

 

같은 방법은 member_ko.properties 와 member_en.properties 파일을 생성합니다.

 

member.properties 파일을 열어 key = value 정보를 한글로 작성합니다.

 

 

작성한 정보 전체를 드래그 하여 마우스 오른쪽 버튼 클릭 후 Unicode 표시를 클릭합니다.

 

 

변환된 내용을 복사해서 member_ko.properties 에 붙여넣고 저장합니다.

 

 

member_en.properties 은 그냥 영어로 작성합니다.

 

 

 

JSP 다국어 표시

 

아스키 코드 한글과 영어 표시

 

// 태그 라이브러리 설정
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

...

// 주석 해제해서 확인
// 영어로 표시
<%-- <fmt:setLocale value="en_US" /> --%>
// 한글로 표시
<fmt:setLocale value="ko_KR" />

<h1>
    회원정보<br>
    <br>
    <fmt:bundle basename="resource.member">  
    이름:<fmt:message key="mem.name" />
        <br>
    주소:<fmt:message key="mem.address" />
        <br>
    직업:<fmt:message key="mem.job" />
    </fmt:bundle>
</h1>

...

 

웹 브라우저에서 요청하면 설정한대로 회원 정보를 출력합니다.

 

 

한글 locale 을 주석 처리하고 영어 locale 을 주석 해제해서 확인해보시기 바랍니다.

 

 

 

포매팅 태그 라이브러리

 

JSTL 포매팅 라이브러리를 사용하면 쉽게 원하는 형태로 숫자, 날짜, 문자열을 표시할 수 있습니다.

 

<fmt:formatNumber>  태그 속성

 

속성 설명
value 출력될 숫자를 지정합니다.
type 출력될 타입을 지정합니다.
pattern 인 경우 %, number 인 경우 숫자, currency 인 경우 통화 형식으로 출력합니다.
dateStyle 날짜의 출력 형식을 지정합니다.
DateFormat 클래스의 full, long, medium, short 등이 지정되어 있습니다.
groupingUsed 콤마(,) 등 기호로 구분 여부를 지정합니다. 이 속성이 true 이면 10000 을 10,000 으로 표시합니다.
기본값은 true 입니다.
currencyCode 통화 코드를 지정합니다. 한국 원하는 KRW 입니다.
currentSimbol 통화를 표시할 때 사용할 기호를 표시합니다.
var <formatNumber> 태그 결과를 저장할 변수의 이름을 지정합니다.
scope 변수의 접근 범위를 지정합니다.
pattern 숫자가 출력될 양식을 지정합니다. 자바의 DecimalFormat 클래스에 정의된 형식을 따릅니다.

 

 

<formatDate> 태그 속성

 

속성 설명
value 포맷될 날짜를 지정합니다.
type 포매팅할 타입을 지정합니다.
date 인 경우 날짜만, time 인 경우 시간만, both 인 경우 둘다 지정합니다.
dateStyle 날짜의 출력 형식을 지정합니다.
DateFormat 클래스의 full, long, medium, short 등이 지정되어 있습니다.
timeStyle 시간 출력 형식을 지정합니다.
자바 클래스의 DateFormat 에 정의된 형식을 사용합니다.
pattern 직접 출력 형식을 지정합니다.
자바 클래스의 SimpleDateFormat 에 지정된 패턴을 사용합니다.
timeZone 특정 나라 시간대로 시간을 설정합니다.

 

 

포매팅 태그 라이브러리 예제

 

// 태그 라이브러리 선언 필수
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

...

<h2>formatNumber 예제.</h2>
<c:set var="price" value="1000000000" />
<fmt:formatNumber value="${price}" type="number" var="priceNumber" />
통화 :
<fmt:formatNumber type="currency" currencySymbol="₩" value="${price}"
    groupingUsed="true" />
<br> 퍼센트 :
<fmt:formatNumber value="${price}" type="percent" groupingUsed="false" />
<br> 일반 숫자 : ${priceNumber}
<br>

<h2>formatDate 예제</h2>
<c:set var="now" value="<%=new Date()%>" />
<fmt:formatDate value="${now }" type="date" dateStyle="full" />
<br>
<fmt:formatDate value="${now }" type="date" dateStyle="short" />
<br>
<fmt:formatDate value="${now }" type="time" />
<br>
<fmt:formatDate value="${now }" type="both" dateStyle="full"
    timeStyle="full" />
<br>
<fmt:formatDate value="${now }" pattern="YYYY-MM-dd :hh:mm:ss" />
<br>

<br>
<br> 한국 현재 시간:
<fmt:formatDate value="${now }" type="both" dateStyle="full"
    timeStyle="full" />
<br>
<br>

<fmt:timeZone value="America/New York">
  뉴욕 현재 시간:<fmt:formatDate value="${now }" type="both"
        dateStyle="full" timeStyle="full" />
    <br>
</fmt:timeZone>

 

 

 

여기까지 임미다.

728x90