개발 창고/Web

[JSTL] Formatting태그(2)

로이제로 2020. 8. 27. 23:21
반응형

이전 이전에는 JSTL 중 Core 그리고 Formatting태그 중 formatNumer/parseNumber/formatDate/parseDate에 대해 알아보았습니다. 이번에는 Formatting 태그 중 빈도수는 낮지만 남은 Formatting태그에 대해 알아보도록 하겠습니다.

일단 복습 의미에서 JSTL의 분류와 Formatting태그에 대해 간략하게 알아보면

 

2020/08/26 - [개발 창고/웹 개발] - [JSTL] Core태그

 

[JSTL] Core태그

Spring에서 JSP로 개발을 하다보면 용어는 몰라도 다음과 같은 표현을 자주 쓰곤합니다. ${name} 은 html에서 제공되는 폰트를 굵게 보여주는 태그이고, 이 ${name}은 무엇일까? 실제 페이지에서는 저 ${n

royzero.tistory.com

2020/08/27 - [개발 창고/웹 개발] - [JSTL] Formatting태그(1)

 

[Spring] JSTL - Formatting태그(1)

이전에 JSTL 중 Core 태그에 대해 작성하였습니다. 오늘은 그 외에 숫자/날짜 등을 위한 Format태그에 대해 작성해볼까 합니다. 2020/08/26 - [개발 창고/웹 개발] - [Spring] JSTL이란? [Spring] JSTL이란? (1) S..

royzero.tistory.com

 

  JSTL 분류

 

  • Core 태그
  • Formatting 태그
  • SQL 태그
  • XML 태그
  • JSTL Function

  Formatting 태그

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

JSP페이지 상단에 위와 같이 해주어야 formatting 태그의 사용이 가능합니다.

 

  bundle

태그 옵션 필수 기본값 내용
<fmt:bundle>       <bod>에서 사용될 번들 리소스를 로드합니다.
  basename Y 없음 로드할 명되긴 기본 이름 번들
  prefix N 없음 하위 태그인 <fmt:message>에 앞에 붙일 사전어
package com.test;

import java.util.ListResourceBundle;

public class ExampleList extends ListResourceBundle {
    @Override
    protected Object[][] getContents() {
        Object[][] list = {
            {"product.apple", "사과"}
          , {"product.banana", "바나"}
          , {"product.melon", "멜론"}
        };
        
        return list;
    }

}

다음과 같은 리소스가 있는 경우

<!-- prefix를 사용하여 ExampleList 번들을 로드하는 경우 -->
<p>prefix를 사용하여 ExampleList 번들을 로드하는 경우</p>
<fmt:bundle basename="com.test.ExampleList" prefix="product.">
    <fmt:message key="apple"/><br/>
    <fmt:message key="banana"/><br/>
    <fmt:message key="melon"/><br/>
</fmt:bundle>

<p>prefix를 사용하지 않고 ExampleList 번들을 로드하는 경우</p>
<!-- prefix를 사용하지 않고 ExampleList 번들을 로드하는 경우 -->
<fmt:bundle basename="com.test.ExampleList">
    <fmt:message key="product.apple"/><br/>
    <fmt:message key="product.banana"/><br/>
    <fmt:message key="product.melon"/><br/>
</fmt:bundle>

bundle를 활용한 HTML의 결과

 

  setBundle

태그 옵션 필수 기본값 내용
<fmt:setBundle>       로드한 번들 리소스 저장해 놓을 변수
  basename Y 없음 로드할 명되긴 기본 이름 번들
  var N 기본값 변경 로드한 번들이 저장될 새로운 변수 명
  scope N Page 해당 리소스가 적용 가능한 범위
package com.test;

import java.util.ListResourceBundle;

public class ExampleList extends ListResourceBundle {
    @Override
    protected Object[][] getContents() {
        Object[][] list = {
            {"product.apple", "사과"}
          , {"product.banana", "바나"}
          , {"product.melon", "멜론"}
        };
        
        return list;
    }

}

위의 리소스를 사용하는 경우

<!-- ExampleList 번들을 로드 -->
<p>ExampleList 번들을 로드</p>
<fmt:setBundle basename="com.test.ExampleList" var="list"/>

<!-- 사전에 로드한 list 번들을 활용하는 경우 -->
<p>사전에 로드한 list 번들을 활용하는 경우</p>
<fmt:message bundle="${list}" key="product.apple"/><br/>
<fmt:message bundle="${list}" key="product.banana"/><br/>
<fmt:message bundle="${list}" key="product.melon"/><br/>

setBundle을 활용한 HTML의 결과

 

  message

태그 옵션 필수 기본값 내용
<fmt:message>       국제화된 메시지 표시
  key N Body 검색을 위한 키
  bundle N 기본 번들 검색하기 위한 리소스 번들
  var N 현재 페이지에 표시 검색된 지역 메시지을 저장할 변수 명
  scope N Page 검색된 지역 변수를 사용할 수 있는 범위

상단에서 예시는 이미 안내가 되었으므로 따로 예시는 들지 않도록 하겠습니다.

 

  setLocale

태그 옵션 필수 기본값 내용
<fmt:setLocale>       LOCALE 설정
  value Y 기본 LOCALE ISO-639 언어 코드와 ISO-3166 국가 코드를 나타내는 2개의 코드 조합으로 지정
  variant N 없음 브라우저별 변형
  scope N Page 적용될 범위 (page|request|session|appplication)
<p>Default Locale : <%= response.getLocale() %></p>

<!-- 영어_미국: en_US -->
<fmt:setLocale value="en_US"/>
<p>영국_미국 Locale : <%= response.getLocale() %></p>

<!-- 한국어_한국: ko_KR -->
<fmt:setLocale value="ko_KR"/>
<p>한국어_한국 Locale : <%= response.getLocale() %></p>

<!-- 독일어_독일: en_DE -->
<fmt:setLocale value="en_DE"/>
<p>독일어_독일 Locale : <%= response.getLocale() %></p>

<!-- 캐나다어_캐나다: en_CA -->
<fmt:setLocale value="en_CA"/>
<p>캐나다어_캐나다 Locale : <%= response.getLocale() %></p>

 

페이지 내의 Locale이 변경 됨

 

  timeZone

태그 옵션 필수 기본값 내용
<fmt:timeZone>       표준시간대 설정
  value Y 없음 적용할 표준시간대
<c:set var="now" value="<%=new java.util.Date()%>"/>

<p>Default :<fmt:formatDate value="${now}" type="both"/></p>

<c:forEach var="zone" items="<%= java.util.TimeZone.getAvailableIDs()%>">
${zone} : 
<fmt:timeZone value = "${zone}">
    <fmt:formatDate value = "${now}" timeZone = "${zn}" type = "both" />
</fmt:timeZone>

<br/>
</c:forEach>

 

TimeZone별 시간표시

표준시간대별 현재 정보를 반환해준다

 

  setTimeZone

태그 옵션 필수 기본값 내용
<fmt:setTimezone>       TimeZone을 변수로 저장
  value Y 없음 저장할 표준시간대
  var N 기본값 변경 표준시간대를 저장할 변수명
  scope N Page 적용될 범위 (page|request|session|appplication)
<!-- 현재값을 now로 저장 -->
<c:set var="now" value="<%=new java.util.Date()%>"/>

<p>기본 날짜: <fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full" /></p>

<p>&lt;표준시간대 변경 GMT-8&gt;</p>
<fmt:setTimeZone value = "GMT-8" />
<p>변경된 날짜: <fmt:formatDate value = "${now}" type="both" dateStyle="full" timeStyle="full" /></p>

 

표준시간대 변경한 HTML

 

  requestEncoding

태그 옵션 필수 기본값 내용
<fmt:requestEncoding>       Character Encoding을 설정
  value Y 없음 적용할 인코딩 키 값
<p>Default Encoding : <%= request.getCharacterEncoding() %></p>

<!-- UTF-8 -->
<fmt:requestEncoding value="UTF-8"/>
<p>Encoding : <%= request.getCharacterEncoding() %></p>

<!-- UTF-16 -->
<fmt:requestEncoding value="UTF-16"/>
<p>Encoding : <%= request.getCharacterEncoding() %></p>

<!-- UTF-32 -->
<fmt:requestEncoding value="UTF-32"/>
<p>Encoding : <%= request.getCharacterEncoding() %></p>

<!-- EUC-KR -->
<fmt:requestEncoding value="EUC-KR"/>
<p>Encoding : <%= request.getCharacterEncoding() %></p>

 

변경된 Encoding에 따른 HTML

반응형

'개발 창고 > Web' 카테고리의 다른 글

[Javascript] 사업자등록번호 체크  (0) 2020.08.31
[JSTL] JSTL Function  (0) 2020.08.31
[JSTL] Formatting태그(1)  (0) 2020.08.27
[JSTL] Core태그  (0) 2020.08.26
[HTTP] 개발하다 보면 접하게되는 HTTP 응답코드  (0) 2020.08.21