-
[JSP/Servlet] 포매팅 라이브러리IT/Spring-JSP&Servlet 2020. 11. 21. 17:24
■ 들어가기
- 뇌를 자극하는 JSP&Servlet (김윤명/한빛미디어). 을 공부하며 정리하는 블로그
■ 목차
1. <fmt:formatDate>
2. <fmt:formatNumber>
3. <fmt:setLocale>
4. <fmt:timeZone>, <fmt:setTimeZone>
5. <fmt:bundle>, <fmt:setBundle>
5-1. <fmt:bundle> 커스텀 액션과 프로퍼티 파일 내 변수 처리
6. POST 메서드로 전송된 한글 입력 데이터 처리
1. <fmt:formatDate> 커스텀 액션
- 날짜와 시각을 포매팅하는 커스텀 액션
- 출력할 날짜와 시각을 java.util.Date 클래스 타입의 객체로 넘겨줘야 하기 때문에 먼저 이 클래스의 객체를 만들어야 함!
1) Date 클래스 객체 생성 - using Java code!
Date date = new Date() ;
실제 jsp 코드 내에서는 <c:set> 커스텀 액션으로 변수 선언
ex. <c:set var="date" value="<%= new Date() %>" />2) <fmt:formatDate> 커스텀 액션을 이용해 Date 객체가 담고 있는 날짜와 시각을 출력!
- value 애트리뷰트 값으로 Date 객체를 넘겨주며, 이때 EL 식을 이용해서 전달!
<fmt:formatDate value="${date}" />
3) 시각을 출력하기 위해서는 type 애트리뷰트를 추가하고 그 값으로 "time"을 지정! (기본값: date)
- type 애트리뷰트 값으로 "both" 가능하며 날짜와 시각 모두 출력!
<fmt:formatDate value="${date}" type="time" />
- 기본 포맷팅
날짜: YYYY.MM.DD
시각: 오전|오후 HH:MI:SS
- 만일 날짜 포맷팅을 변경하고 싶다면 dateStyle 애트리뷰트를 추가 후 full, long, medium, short 중 한 값을 지정
- 만일 시각 포맷팅을 변경하고 싶다면 timeStyle 애트리뷰트를 추가 후 full, long, medium, short 중 한 값을 지정
- 날짜/시각 short/medium/long/full 예시
[S] 20. 11. 21 오후 5:16
[M] 2020. 11. 21 오후 5:16:53
[L] 2020년 11월 21일 (토) 오후 5시 16분 53초
[F] 2020년 11월 21일 토요일 오후 5시 16분 53초 KST- 위의 포맷팅 외에 직접 패턴을 지정할 때는 pattern 애트리뷰트에 패턴 지정
ex. <fmt:formatDate value="${date}" type="date" pattern="YYYY/MM/DD (E)" /> <!-- 2020/11/21 (토) -->
ex. <fmt:formatDate vaelu="${date}" type="time" pattern="(a) hh:mm:ss" /> <!-- (오후) 05:23:49 -->
2. <fmt:formatNumber> 커스텀 액션
- 수치 표기하기 위한 커스텀 액션
- 표현하고자 하는 포맷팅에 따라 애트리뷰트를 추가하면 된다.
- 기본적인 표기법 :
<fmt:formatNumber value="10000" />
- 숫자 천단위 표기
<fmt:formatNumber value="1234500" groupingUsed="true" /> <!-- 1,234,500 -->
- 소수점 표기 (#: 유효숫자 있는 경우 채우며 없으면 미표시, 0: 유효숫자있으면 채우고 없으면 0으로 표시)
<fmt:formatNumber value="3.14158" pattern="#.##" /> <!-- 3.14 -->
<fmt:formatNumber value="10.5" pattern="#.00" /> <!-- 10.50 -->
- 퍼센트 단위 표기
<fmt:formatNumber value="0.5" type="percent" /> <!-- 50% -->
- 금액(통화) 단위 표기
<fmt:formatNumber value="2500000" type="currency" />
<fmt:formatNumber value="2500000" type="currency" currencySymbol="$" /> <!-- $2,500,000 -->
3. <fmt:setLocale> 커스텀 액션
- 특정 지역에 맞게 데이터 포맷을 설정하고자 할 때 사용하는 액션
- <fmt:setLocale> 커스텀 액션 이후 <fmt:formatDate> 커스텀 액션을 사용하면 해당 지역에 맞게 날짜 및 시각이 설정됨
- 사용법 :
<fmt:setLocale value="언어코드" />
<fmt:setLocale value="언어코드_국가코드" />
※ 참고: 국가코드 ( www.loc.gov/marc/unimarctomarc21_tables.pdf )
※ 참고: 언어코드 ( www.loc.gov/standards/iso639-2/php/code_list.php )
4. <fmt:timeZone>, <fmt:setTimeZone> 커스텀 액션
- <fmt:timeZone> 커스텀 액션은 value 애트리뷰트에 "특정 지역"이름을 지정하면 날짜와 시각이 해당 지역 시간대에 맞게 표기됨 (날짜와 시각은 <fmt:formatDate> 커스텀 액션 사용!)
- 사용 예시 :
<fmt:timeZone value="America/New_York" >
날짜: <fmt:formatDate value="${date}" type="date" />
시각: <fmt:formatDate value="${date}" type="time" />
</fmt:timeZone>
※ 지역(도시) 이름은 java.util.TimeZone 클래스의 getAvaliableIDs 메서드 리턴값 중 하나를 사용해야 함
String arr[] = TimeZone.getAvailableIDs() ;
- <fmt:setTimeZone> 커스텀 액션은 이 액션이 실행된 이후 모든 코드에 영향을 미침
( <fmt:timeZone> 커스텀 액션의 경우 시작/종료 태그 내에서만 영향 미침 )
5. <fmt:bundle>, <fmt:setBundle> 커스텀 액션
- 일반 텍스트를 여러 가지 언어로 표현하기 위해 사용하는 커스텀 액션
- 하나의 JSP 페이지로 여러 가지 언어의 웹 페이지 생성 기능 지원
1) 사전에 언어별 프로퍼티 파일(.properties)을 생성하고 "키=값" 형태로 내용 작성
( .properties 파일은 웹 애플리케이션 디렉토리 내 /WEB-INF/classes 서브디렉토리에 저장 )
- 보통 네이밍 규칙은 "대표파일명_언어코드.properties" 형식으로 작성함
- 영어 이외의 파일은 해당 파일이 작성된 디렉토리에서 native2ascii.exe 프로그램을 통해 ASCII 파일로 변환 필요함
ex. native2ascii Intro_ko.properties.org Intro_ko.properties
2) <fmt:setBundle> 또는 <fmt:bundle>, <fmt:message> 커스텀 액션으로 파일을 읽어옴
- <fmt:setBundle> 커스텀 액션은 사용할 프로퍼티 파일을 지정 (대상 언어는 웹 브라우저 언어 설정에 따름)
ex. <fmt:setBundle basename="Intro" />
- <fmt:setBundle> 커스텀 액션으로 사용할 프로퍼티 파일 지정한 후 <fmt:message> 커스텀 액션으로 데이터 읽어옴
ex. <fmt:message key="TITLE" />
앗! 그런데 한글이 깨져서 나오네... ㅠㅠ 왜그런거지...;; 일단 영어는 제대로 나옴
5-1. <fmt:bundle> 커스텀 액션과 프로퍼티 파일 내 변수 처리
1) <fmt:bundle> 액션은 <fmt:setBundle>과 비슷한 일을 하지만 시작~끝 태그 사이의 코드에만 영향을 미침
2) 프로퍼티 파일 내 변수 처리
- 프로퍼티 파일에서는 변수를 이름이 아닌 인덱스 값으로 표시
- 인덱스 값은 중괄호에 쌓여 0부터 순서대로 표시하여 사용
ex. GREETING=안녕하세요, {0}님. {1}번째 방문하셨군요.
- 위의 변수에 값을 대입하는 것은 JSP 페이지에서 <fmt:message> 커스텀 액션을 사용해서 처리!
( <fmt:param> 액션을 인덱스 수 만큼 순서대로 작성 )
ex. <fmt:message var="greeting" key="GREETING">
<fmt:param>Spiderman</fmt:param>
<fmt:param>3</fmt:param>
</fmt:message>
6. POST 메서드로 전송된 한글 입력 데이터 처리
한글 데이터 입력 (HTML) 데이터 출력 (JSP) - 위와 같이 <form> 앨리먼트에 post 메서드로 한글 데이터 전달 받을 때 JSP 페이지에서는 인코딩 처리를 위한 스크립틀릿을 추가해야 함
ex. <% request.setCharacterEncoding("utf-8") ; %>
- 스크립틀릿 대신에 <fmt:requestEncoding> 커스텀 액션으로 대체 가능!
ex. <fmt:requestEncoding value="utf-8" />
한글 데이터 입력 (HTML) 데이터 출력 (JSP) 데이터 출력 (JSP) - 인코딩 설정 'IT > Spring-JSP&Servlet' 카테고리의 다른 글
[JSP/Servlet] 커스텀 액션 만들기2 - 태그 파일 이용(1/2) (0) 2020.11.23 [JSP/Servlet] 커스텀 액션 만들기1 - 커스텀 액션을 만드는 방법 (0) 2020.11.23 [JSP/Servlet] JSTL - 코어 라이브러리 (0) 2020.11.13 [JSP/Servlet] JSTL (0) 2020.11.13 [JSP/Servlet] 표준 액션(2/2) - <jsp:useBean>, <jsp:getProperty>, <jsp:setProperty> (0) 2020.11.06