2013/09/23 - [Java/Java EE] - JSP Expression Language(표현 언어 또는 익스프레션 언어)

2013/09/23 - [Java/Java EE] - JSP JSTL(JSP Standard Tag Library) 라이브러리 추가

2013/09/23 - [Java/Java EE] - JSP JSTL(JSP Standard Tag Library) - 코어 태그


1. 국제화 태그

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

- 특정 지역에 따라 알맞은 메시지를 출력할 경우에 사용한다.

 기능분류

 태그 

 설명 

 로케일 지정

 setLocale

 Locale을 지정

 requestEncoding

 요청 파라미터의 캐릭터 인코딩을 지정

 메시지 처리

 bundle

 사용할 번들을 지정

 message

 지역에 알맞은 메시지를 출력

 setBundle

 리소스 번들을 읽어와 특정 변수에 저장

 숫자 및 날짜 포맷팅

 formatNumber

 숫자를 포맷팅

 formatDate

 Date 객체를 포맷팅

 parseDate

 문자열로 표시된 날짜를 분석해서 Date 객체로 변환

 parseNumber

 문자열로 표시된 날짜를 분석해서 숫자로 변환

 setTimeZone

 시간대 정보를 특정 변수에 저장

 timeZone

 시간대를 지정


1.1. 로케일 지정 태그


1.1.1. <fmt:setLocale> 태그

- <fmt:setLocale> : 국제화 태그들이 사용할 로케일을 지정한다.

- <fmt:setLocale value="언어코드_국가코드" scope="영역" />

- value : 언어코드_국가코드 형식으로 지정하되 언어코드는 필수이고, 국가코드는 추가지정할 수 있다. 사이에 구분은 바(-) 또는 언더바(_)로 구분한다.

- scope : 영역을 설정한다. 기본값은 page이다.

- 웹 브라우저는 Accept-Language 헤더에 수용 가능한 언어 목록을 전송한다. 이 헤더 값을 이용해서 메시지를 출력해주기 때문에 <fmt:setLocale> 태그는 거의 사용되지 않는다.

<!-- fmt_setLocale.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>fmt:setLocale</title> </head> <body> <c:set var="now" value="<%= new java.util.Date() %>" /> <h1>대한민국</h1> 금액 : <fmt:formatNumber value="1000000" type="currency" /><br> 일시 : <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/> <hr><!-- --------------------------------------------------------------------------------------- --> <h1>미국</h1> <fmt:setLocale value="en_us"/> 금액 : <fmt:formatNumber value="1000000" type="currency" /><br> 일시 : <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/> <hr><!-- --------------------------------------------------------------------------------------- --> <h1>일본</h1> <fmt:setLocale value="ja_jp"/> 금액 : <fmt:formatNumber value="1000000" type="currency" /><br> 일시 : <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/> <hr><!-- --------------------------------------------------------------------------------------- --> </body> </html> <!-- 실행결과 대한민국 금액 : ₩1,000,000 일시 : 2013년 9월 30일 월요일 오후 4시 22분 45초 KST --------------------------------------------------------------------------------------- 미국 금액 : $1,000,000.00 일시 : Monday, September 30, 2013 4:22:45 PM KST --------------------------------------------------------------------------------------- 일본 금액 : ¥1,000,000 일시 : 2013年9月30日 16時22分45秒 KST -->



1.1.2. <fmt:requestEncoding> 태그

- <fmt:requestEncoding> : 요청 파라미터의 캐릭터 인코딩을 지정한다.

- <fmt:requestEncoding value="캐릭터셋" />

- <% request.setCharacterEncoding("캐릭터셋"); %> 코드와 동일하다.


1.2. 메시지 처리 태그

- 언어권에 따라서 알맞은 메시지를 출력할 수 있다.


1.2.1. <fmt:bundle> 태그

- 사용할 메시지 번들을 지정한다.

- <fmt:bundle basename="리소스번들명"> <fmt:message key="키명"> </fmt:bundle>

- basename : 사용할 리소스 번들 이름

- 번들 파일은 Java.util.Properties 클래스를 사용해서 읽어오기 때문에 확장자가 .properties 이어야 한다.

- 번들이름_언어_국가.properties

- 언어와 국가 자리에는 두글자로 된 언어코드(생략불가 생략이 기본값 en)와 국가코드(생략가능)가 있다.

- prefix : 번들태그의 내부에서 사용되는 message 태거의 key 속성의 값 앞에 자동으로 붙게 될 문자열


1.2.2. <fmt:message> 태그

- 지정한 리소스 번들로부터 메시지를 읽어와 출력한다.

- <fmt:bundle basename="리소스번들명"> <fmt:message key="키명"> </fmt:bundle>

- key : 읽어올 메시지의 키 값

- var : 메시지를 저장할 변수명, 지정할 경우 메시지를 출력하지 않고 var 속성으로 지정한 변수에 메시지를 저장한다.

- scope : 변수가 저장되는 영역 지정

- bundle : <fmt:setBundle> 태그를 사용해서 로딩한 번들로부터 메시지를 읽어올 때 사용

- {n} 부분에 들어갈 값을 지정하기 위해서 <fmt:param> 태그를 사용한다.

<!-- fmt_bundle_message.jsp -->

<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ 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" /> --%><!-- 옆 주석을 풀면 언어코드가 en이 된다. -->
<fmt:bundle basename="resource.message">
<fmt:message key="TITLE" var="title"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>${title}</title>
</head>
<body>
	<c:if test="${! empty param.id}">
	<fmt:message key="GREETING">
		<fmt:param value="${param.id}" />
	</fmt:message>
	</c:if>
	<br>
	<fmt:message key="VISITOR" />
</body>
</html>
</fmt:bundle>

<!-- 
	한글실행결과	


영어실행결과

-->



1.2.3. <fmt:setBundle> 태그

- 리소스 번들을 변수로 저장한 후 어디서나 사용할 수 있게 된다.

- <fmt:setBundle var="변수명" basename="리소스번들명" /> <fmt:message bundle="${setBundle에 지정된 변수명}" key="키명" />

- basename : 읽어올 리소스 번들의 이름

- var : 리소스 번들을 저장할 변수 명

- scope : 변수를 저장할 영역

<!-- fmt_bundle_message.jsp -->

<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ 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" /> --%><!-- 옆 주석을 풀면 언어코드가 en이 된다. -->
<fmt:setBundle var="message" basename="resource.message"/>
<fmt:message bundle="${ message }" key="TITLE" var="title"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>${ title }</title>
</head>
<body>
	<c:if test="${! empty param.id}">
	<fmt:message bundle="${ message }" key="GREETING">
		<fmt:param value="${param.id}" />
	</fmt:message>
	</c:if>
	<br>
	<fmt:message bundle="${ message }" key="VISITOR" />
</body>
</html>

<!-- 
	실행결과는 위와 같다
 -->



1.3. 숫자 및 날짜 포맷팅 처리 태그


1.3.1. <fmt:formatNumber> 태그

- 숫자를 양식에 맞춰 문자열(String)로 변환한다.

- <fmt:formatNumber value="숫자값" type="값타입" pattern="패턴" currentCode="통화코드" currencySymbol="통화심볼" groupingUsed="boolean" var="변수명" scope="영역" />

- value : 양식에 맞춰 출력할 숫자

- type : 출력할 양식, number일 경우 숫자, percent일 경우 %, currency일 경우 통화형식으로 출력한다. 기본값은 number

- pattern : 직접 숫자가 출력되는 양식을 지정, java.text.DecimalFormat 클래스에 정의되어있는 패턴을 사용한다.

- #을 지정하면 유효숫자가 있을경우만 표시되고 0을 지정하면 0으로 자리수만큼 채워진다.

- currencyCode : 통화 코드를 지정, 통화코드는 ISO 4217에 지정되어 있다. type의 속성값이 currency일 때 의미가 있다.

- currentSymbol : 통화를 표현할 때 사용할 기호를 표시,  type의 속성값이 currency일 때 의미가 있다.

- groupingUsed : 콤마(,)와 같이 단위를 구분할 때 사용되는 기호를 사용할 지의 여부를 결정한다. true일 경우 기호사용, false일 경우 사용되지 않음, 기본값은 ture

- var : 포맷팅 한 결과를 저장할 변수 명, 변수 타입은 String, var 속성을 지정하지 않으면 결과가 곧바로 출력

- scope : 변수를 저장할 영역, 기본값은 page

<!-- fmt_formatNumber.jsp -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>fmt:formatNumber</title>
</head>
<body>
	<c:set var="price" value="12345" />
	<fmt:formatNumber value="${ price }" type="number" var="numberType"/><br>
	통화 : <fmt:formatNumber value="${ price }" type="currency" currencySymbol="원"/><br>
	퍼센트 : <fmt:formatNumber value="${ price }" type="percent" groupingUsed="false" /><br>
	숫자 : ${ numberType }<br>
	패턴: <fmt:formatNumber value="${ price }" pattern="00000000.000"/><br>
	패턴: <fmt:formatNumber value="${ price }" pattern="########.###"/><br>
</body>
</html>

<!-- 
	실행결과
	
	통화 : 원12,345
	퍼센트 : 1234500%
	숫자 : 12,345
	패턴: 00012345.000
	패턴: 12345
 -->



1.3.2. <fmt:parseNumber> 태그

- 문자열을 숫자(Number)로 변환한다.

- <fmt:parseNumber value="값" type="값타입" pattern="패턴" parseLocale="통화코드" integerOnly="boolean" var="변수명" scope="영역 />

- value : 파싱할 문자열

- type : value 속성의 문자열 타입을 지정, number, currency, percentage가 올 수 있다. 기본값은 number

- pattern : 직접 파싱할 때 사용할 양식을 지정

- parseLocale : 파싱할 때 사용할 로케일을 지정

- integerOnly : 정수 부분만 파싱할 지의 여부를 지정, 기본값은 false

- var : 파싱한 결과를 저장할 변수명을 지정

- scope : 변수를 저장할 영역을 지정, 기본값은 page

<!-- fmt_parseNumber -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>fmt:parseNumber</title>
</head>
<body>
	<fmt:parseNumber value="1234.56" pattern="0000.000" var="num1"/>
	${ num1 }<br>
	<fmt:parseNumber value="1234.56" var="num2"/>
	${ num2 }<br>
	<fmt:parseNumber value="1234.56" pattern="####.###" var="num3" />
	${ num3 }<br>
</body>
</html>

<!-- 
	실행결과
	
	1234.56
	1234.56
	1234.56
 -->



1.3.3. <fmt:formatDate> 태그

- 날짜 정보를 담고 있는 객체를 포맷팅하여 출력한다.

- <fmt:formatDate value="날짜값" type="타입" dateStyle="날짜스타일" timeStyle="시간스타일" pattern="패턴" timeZone="타임존" var="변수명" scope="영역" />

- value : 포맷팅할 날짜 및 시간 값

- type : 날짜, 시간 또는 둘다 포맷팅 할 지의 여부를 지정, time date both 중 한가지 값을 가지며, 기본값은 date

- dateStyle : 날짜에 대해 미리 정의된 포맷팅 스타일을 지정, default short medium long full 중 한가지 값을 가지며, 기본값은 default

- timeStyle : 시간에 대해 미리 정의된 포맷팅 스타일을 지정, default short medium long full 중 한가지 값을 가지며, 기본값은 default

- dateStyle 및 timeStyle API : http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

- pattern : 직접 파싱할 때 사용할 양식을 지정, java.text.DateFormat 양식을 사용

- timeZone : 시간대를 변경하고 싶을 때 사용, <fmt:setTimeZone> 태그에서 생성한 TimeZone 객체를 사용

- var : 파싱한 결과를 저장할 변수 명을 지정

- scope : 변수를 저장할 영역을 지정, 기본 값은 page

<!-- fmt_formatDate.jsp -->

<%@page import="org.apache.naming.java.javaURLContextFactory"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>fmt:formatDate</title>
</head>
<body>
	<c:set var="now" value="<%= new java.util.Date() %>" />
	<h1>type = date</h1>
	default : <fmt:formatDate value="${ now }" type="date" dateStyle="default"/><br>
	short : <fmt:formatDate value="${ now }" type="date" dateStyle="short"/><br>
	medium : <fmt:formatDate value="${ now }" type="date" dateStyle="medium"/><br>
	long : <fmt:formatDate value="${ now }" type="date" dateStyle="long"/><br>
	full : <fmt:formatDate value="${ now }" type="date" dateStyle="full"/>
	<hr><!-- ---------------------------------------------------------------------  -->
	<h1>type = time</h1>
	default : <fmt:formatDate value="${ now }" type="time" timeStyle="default"/><br>
	short : <fmt:formatDate value="${ now }" type="time" timeStyle="short"/><br>
	medium : <fmt:formatDate value="${ now }" type="time" timeStyle="medium"/><br>
	long : <fmt:formatDate value="${ now }" type="time" timeStyle="long"/><br>
	full : <fmt:formatDate value="${ now }" type="time" timeStyle="full"/>
	<hr><!-- ---------------------------------------------------------------------  -->
	<h1>type = both</h1>
	default : <fmt:formatDate value="${ now }" type="both" dateStyle="default" timeStyle="default"/><br>
	short : <fmt:formatDate value="${ now }" type="both" dateStyle="short" timeStyle="default"/><br>
	medium : <fmt:formatDate value="${ now }" type="both" dateStyle="medium" timeStyle="default"/><br>
	long : <fmt:formatDate value="${ now }" type="both" dateStyle="long" timeStyle="default"/><br>
	full : <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="default"/>
	<hr><!-- ---------------------------------------------------------------------  -->
	<h1>pattern</h1>
	YYYY/MM/dd : <fmt:formatDate value="${ now }" type="date" pattern="YYYY/MM/dd" /><br>
	HH:mm:SS : <fmt:formatDate value="${ now }" type="time" pattern="HH:mm:SS" /><br>
	hh:mm:ss : <fmt:formatDate value="${ now }" type="time" pattern="hh:mm:ss" /><br>
	a : <fmt:formatDate value="${ now }" type="time" pattern="a" /><br>
	H : <fmt:formatDate value="${ now }" type="time" pattern="HH" /><br>
	k : <fmt:formatDate value="${ now }" type="time" pattern="kk" /><br>
	K : <fmt:formatDate value="${ now }" type="time" pattern="KK" /><br>
	h : <fmt:formatDate value="${ now }" type="time" pattern="hh" /><br>
	z : <fmt:formatDate value="${ now }" type="time" pattern="z" /><br>
	Z : <fmt:formatDate value="${ now }" type="time" pattern="Z" /><br>
	X : <fmt:formatDate value="${ now }" type="time" pattern="X" /><br>
</body>
</html>

<!-- 
	실행결과
	
	type = date
	
	default : 2013. 9. 30
	short : 13. 9. 30
	medium : 2013. 9. 30
	long : 2013년 9월 30일 (월)
	full : 2013년 9월 30일 월요일
	---------------------------------------------------------------------------
	type = time
	
	default : 오후 3:36:59
	short : 오후 3:36
	medium : 오후 3:36:59
	long : 오후 3시 36분 59초
	full : 오후 3시 36분 59초 KST
	---------------------------------------------------------------------------
	type = both
	
	default : 2013. 9. 30 오후 3:36:59
	short : 13. 9. 30 오후 3:36:59
	medium : 2013. 9. 30 오후 3:36:59
	long : 2013년 9월 30일 (월) 오후 3:36:59
	full : 2013년 9월 30일 월요일 오후 3:36:59
	---------------------------------------------------------------------------
	pattern
	
	YYYY/MM/dd : 2013/09/30
	HH:mm:SS : 15:36:66
	hh:mm:ss : 03:36:59
	a : 오후
	H : 15
	k : 15
	K : 03
	h : 03
	z : KST
	Z : +0900
	X : +09
 -->



1.3.3. <fmt:parseDate> 태그

- 문자열로 표시된 날짜 및 시간 값을 java.util.Date로 파싱한다.

- <fmt:formatDate value="날짜값" type="타입" dateStyle="날짜스타일" timeStyle="시간스타일" pattern="패턴" timeZone="타임존" parseLocale="로케일" var="변수명" scope="영역" />

- value : 파싱할 문자열

- type : 날짜, 시간 또는 둘다 포맷팅할지의 여부를 지정, time date both 중 한가지 값을 가지며, 기본값은 date

- dateStyle : 날짜에 대해 미리 정의된 포맷팅 스타일을 지정, default short medium long full 중 한가지 값을 가지며, 기본값은 default

- timeStyle : 시간에 대해 미리 정의된 포맷팅 스타일을 지정, default short medium long full 중 한가지 값을 가지며, 기본값은 default

- pattern : 직접 파싱할 때 사용할 양식을 지정, java.text.DateFormat 양식을 사용

- timeZone : 시간대를 변경하고 싶을 때 사용, <fmt:setTimeZone> 태그에서 생성한 TimeZone 객체를 사용

- parseLocale : 파싱할 때 사용할 로케일을 지정

- var : 파싱한 결과를 저장할 변수명을 지정

- scope : 변수를 저장할 영역을 지정, 기본값은 page

<fmt:parseDate value="1989-09-18 03:00:23" pattern="yyyy-MM-dd HH:mm:ss" var="date" />
${ date }



1.3.4. <fmt:timeZone> 태그

- 시간대별로 시간을 처리할 수 있다.

- <fmt:timeZone value="타임존명"> <fmt:formatDate . . . /> </fmt:timeZone>

<!-- fmt_timeZone.jsp  -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>fmt:timeZone</title>
</head>
<body>
	<c:set var="now" value="<%= new java.util.Date() %>"/>
	대한민국 : <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/>
	<br>
	<fmt:timeZone value="Asia/Hong_kong">
		홍콩 :  <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/>
	</fmt:timeZone>
	<br>
	<fmt:timeZone value="Europe/London">
		런던 :  <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/>
	</fmt:timeZone>
	<br>
	<fmt:timeZone value="America/New_York">
		뉴욕 :  <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/>
	</fmt:timeZone>
</body>
</html>

<!-- 
	실행결과
	
	대한민국 : 2013년 9월 30일 월요일 오후 4시 37분 04초 KST 
	홍콩 : 2013년 9월 30일 월요일 오후 3시 37분 04초 GMT+08:00 
	런던 : 2013년 9월 30일 월요일 오전 8시 37분 04초 BST 
	뉴욕 : 2013년 9월 30일 월요일 오전 3시 37분 04초 EDT
 -->



1.3.5. <fmt:setTimeZone> 태그

- 시작태그와 끝태그 사이에만 영향을 미치는 것이 아니고, 액션 태그가 실행된 다음의 모든 코드에 영향을 미친다.

<fmt:setTimeZone value="타임존명"> <fmt:formatDate . . . /> </fmt:timeZone>

<!-- fmt_setTimeZone.jsp -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>fmt:setTimeZone</title>
</head>
<body>
	<c:set var="now" value="<%= new java.util.Date() %>"/>
	대한민국 : <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/>
	<br>
	<fmt:setTimeZone value="Asia/Hong_kong" />
		홍콩 :  <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/>
	<br>
	<fmt:setTimeZone value="Europe/London" />
		런던 :  <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/>
	<br>
	<fmt:setTimeZone value="America/New_York" />
		뉴욕 :  <fmt:formatDate value="${ now }" type="both" dateStyle="full" timeStyle="full"/>
</body>
</html>

<!-- 
	실행결과
	
	대한민국 : 2013년 9월 30일 월요일 오후 4시 39분 22초 KST 
	홍콩 : 2013년 9월 30일 월요일 오후 3시 39분 22초 GMT+08:00 
	런던 : 2013년 9월 30일 월요일 오전 8시 39분 22초 BST 
	뉴욕 : 2013년 9월 30일 월요일 오전 3시 39분 22초 EDT
-->



* TimeZone 리스트

<!-- timeZoneList.jsp -->

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TimeZone List</title>
</head>
<body>
	<c:forEach var="id" items="<%= java.util.TimeZone.getAvailableIDs() %>">
		${ id }<bR>
	</c:forEach>
</body>
</html>

<!-- 
	실행결과
	
	Etc/GMT+12
	Etc/GMT+11
	Pacific/Midway
	Pacific/Niue
	Pacific/Pago_Pago
	Pacific/Samoa
	US/Samoa
	. . . 생략
	Etc/GMT-13
	MIT
	Pacific/Apia
	Pacific/Enderbury
	Pacific/Fakaofo
	Pacific/Tongatapu
	Etc/GMT-14
	Pacific/Kiritimati
 -->



1.4. web.xml 파일에 국제화 관련 태그 기본 값 설정

- 기본으로 사용할 로케일 정보나 시간대를 web.xml 파일에 컨텍스트 초기화 파라미터를 이용해서 설정할 수 있다.

 속성 이름

 설명 

 javax.servlet.jsp.jstl.fmt.localizationContext

 기본으로 사용할 리소스 번들을 지정, 리소스 번들의 basename을 입력한다. 

 javax.servlet.jsp.jstl.fmt.locale

 기본으로 사용할 로케일을 지정한다.

 javax.servlet.jsp.jstl.fmt.timeZone

 기본으로 사용할 시간대를 지정한다.


<context-param>
	<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
	<param-value>resource.message</param-value>
</context-param>

<context-param>
	<param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
	<param-value>ko_kr</param-value>
</context-param>

<context-param>
	<param-name>javax.servlet.jsp.jstl.fmt.timeZone</param-name>
	<param-value>Asia/Seoul</param-value>
</context-param>


+ Recent posts