java.util.Locale request.getLocale();
반환 유형 | 설명 | |
getDefault() | static Locale | Default Locale의 현재 값을 가져온다. |
getCountry() | String | 현재 Locale의 국가/지역 코드(대문자)를 가져온다 |
getDisplayCountry() | String | 현재 Locale의 국가 이름을 가져온다 |
getLanguage() | String | 현재 Locale의 언어 코드(소문자)를 가져온다 |
getDisplayLanguage() | String | 현재 Locale의 언어 이름을 얻어온다 |
<body>
<p> Locale 클래스를 이용한 다국어 처리 예제 </p>
<%
// 내장객체를 이용해 객체 생성
Locale locale = request.getLocale();
// 현재 Locale의 언어 이름을 브라우저에서 가져온다
String displayLanguage = locale.getDisplayLanguage();
// 현재 언어 코드를 가져온다
String language = locale.getLanguage();
// 현재 국가 이름을 가져온다
String displaycountry = locale.getDisplayCountry();
// 현재 국가 지역 코드
String countryCode = locale.getCountry();
%>
Locale 언어 : <%= displayLanguage %> <br>
Locale 언어코드 : <%= language %> <br>
Locale 국가 이름 : <%= displaycountry %> <br>
Locale 국가 코드 : <%= countryCode %>
</body>
크롬에서 실행 시
다양한 국가별 언어를 제대로 표현하기 위해 response 내장 객체의 setHeader( ) 메소드를 사용한다.
<body>
<p> Locale 클래스를 이용한 다국어 처리 예제 <br>
언어설정, 날짜 시간 설정, 기호 -> setter로 설정하기 </p>
<%
response.setContentType("text/html");
// 언어 설정(스페인어)
response.setHeader("Content-Language", "es");
String title="Español";
out.print(title);
%>
<p> Idioma : Español</p>
<p> ¡Hola Mundo! </p>
</body>
<body>
<p> Locale 클래스를 이용한 다국어 처리 예제 <br>
언어설정, 날짜 시간 설정, 기호 -> setter로 설정하기 </p>
<%
// Locale 클래스를 인스턴스화 하기
Locale locale = request.getLocale();
String date =
DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, locale).format(new Date());
%>
<p> 로케일 형식의 날짜 <br>
<% out.print(date); %>
</body>
<body>
<%
Locale locale = request.getLocale();
// 현재 지역의 통화기호가 구해진다
NumberFormat currency = NumberFormat.getCurrencyInstance(locale);
NumberFormat percentage = NumberFormat.getPercentInstance(locale);
String fcurryeency = currency.format(1234567);
String fpercentage = percentage.format(0.25);
out.print("로케일의 통화 형식 : " + fcurryeency + "<br>");
out.print("로케일의 비율 형식 : " + fpercentage);
%>
</body>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
구분 | 태그 유형 | 설명 |
Locale 설정 | setLocale | 로케일을 설정합니다. |
requestEncoding | 요청 파라미터의 문자 인코딩을 설정합니다. | |
메시지 처리 | bundle | 사용할 리소스번들을 설정합니다. |
message | 리소스 번들에서 로케일에 맞는 메시지를 가져와 출력합니다. | |
setBundle | 리소스 번들을 읽어와 특정 변수에 저장한다. | |
날짜 | formatDate | 날짜 형식을 표현합니다. |
parseDate | 문자열에서 원하는 패턴의 날짜 형식으로 변환한다. | |
숫자 | parseNumber | 문자열에서 원하는 패턴의 숫자 형식으로 변환한다. |
formatNumber | 숫자 형식을 표현한다. | |
시간 | setTimeZone | 특정 범위의 시간대를 설정한다. |
timeZone | 시간대를 설정한다. |
<body>
<p> JSTL </p>
<fmt:requestEncoding value="euc-kr" />
<p> 요청 파라미터 : <% out.print(request.getParameter("id")); %> </p>
<form method="post" action="#">
<p> 아이디 : <input type="text" name="id" id="id">
<input type="submit" value="send">
</form>
</body>
처음 실행 모습
아이디에 값을 입력해 보내면 요청 파라미터의 값이 바뀐다.
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<p> JSTL-formatNumber </p>
<p> 숫자 : <fmt:formatNumber value="3200100"/>
<p> <fmt:formatNumber value="3200100" type="number"/>
<!-- groupingUsed="false" : 1000 단위 콤마 없이 표현하겠다. -->
<p> <fmt:formatNumber value="3200100" type="number" groupingUsed="false"/>
<!-- tyep=currency : 통화기호를 사용할 것이라 적어주면 지역을 읽어서 맞는 기호로 출력해준다 -->
<p> <fmt:formatNumber value="3200100" type="currency"/>
<!-- currencySymbol="&" : 통화 기호를 &로 표현하겠다. -->
<p> <fmt:formatNumber value="3200100" type="currency" currencySymbol="&"/>
<!-- type="percent" : 숫자를 퍼센트 형식으로 표현하겠다. -->
<p> <fmt:formatNumber value="3200100" type="percent" />
<!-- 숫자를 최대 10자리까지 표현하고, 소수점 둘째 자리까지만 쓰겠다. -->
<p> <fmt:formatNumber value="3200100.245" minIntegerDigits="10" maxFractionDigits="2" />
<!-- 숫자를 .000 형식으로 표현하겠다 (소수점 세자리)-->
<p> <fmt:formatNumber value="3200100.45" pattern=".000" />
<!-- 숫자를 #,#00.0# 형식으로 표현하겠다 -->
<p> <fmt:formatNumber value="3200100.456" type="number" pattern="#,#00.0#"/>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<p> JSTL - 날짜 형식 표현해보기 </p>
<!-- 자바 빈즈 사용하기 -->
<p> <jsp:useBean id="now" class="java.util.Date" />
<p> <fmt:formatDate value="${now}" type="date"/> </p>
<p> <fmt:formatDate value="${now}" type="time"/> </p>
<!-- both : time+date -->
<p> <fmt:formatDate value="${now}" type="both"/> </p>
<p> <fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"/> </p>
<!-- short : 년도, 시간에 있어서 약간의 생략 -->
<p> <fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"/> </p>
<!-- 미디움 : 사실 디폴트와 같은 모양 -->
<p> <fmt:formatDate value="${now}" type="both" dateStyle="medium" timeStyle="medium"/> </p>
<p> <fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/> </p>
<p> <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/> </p>
<p> <fmt:formatDate value="${now}" type="both" pattern="yyyy년 MM월 dd일 HH시 mm분 ss초 E 요일"/> </p>
</body>
</html>
출력하고 싶은 시간대를 <fmt:timeZone value="나라" >
로 설정하고, 날짜 출력을 </fmt:timeZone>
사이에 적어줘야 한다. 맘대로 위에서 나라 설정하고/>
이런식으로 닫아줬다가는 오류난다.
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<p> JSTL - 시간태그 </p>
<jsp:useBean id="now" class="java.util.Date" />
<p> 한국 : <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full" />
<p> 뉴욕 : <fmt:timeZone value="America/New_York" >
<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/>
</fmt:timeZone>
<p> 런던 : <fmt:timeZone value="Europe/London" >
<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/>
</fmt:timeZone>
</body>
</html>