[JSTL] 포매팅 태그, 문자열 처리 함수

Bam·2024년 5월 28일
0

Spring

목록 보기
41/48
post-thumbnail

포매팅 태그

언어 포매팅

몇몇 웹 사이트들은 전세계의 누구나 이용할 수 있도록 여러 언어를 제공하고 있습니다.

예를 들어 다음은 독일 분데스리가의 도르트문트라는 축구팀의 홈페이지인데요. 축구팀 같은 경우 전세계의 팬들을 위해 다양한 홈페이지에서 다양한 언어를 지원하고 있습니다. 각각 독일어와 영어를 선택했을 때 같은 페이지에서 언어만 변환된 것을 볼 수 있습니다.

이러한 언어 변환 기능을 JSTL에서 구현할 수 있도록 다국어 라이브러리를 제공하고 있습니다. 다국어 라이브러리는 포매팅 라이브러리에 포함되어 있으며 코어 라이브러리가 접두사 c를 사용한 것 처럼 포매팅 라이브러리는 fmt 접두사를 사용합니다.

다국어 라이브러리(포매팅 라이브러리)를 사용하기 위해 반드시 태그라이브 디렉티브 태그를 사용해서 라이브러리를 JSP 문서에 포함시켜 주세요.

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

다음은 다국어 라이브러리에서 사용할 수 있는 태그들 입니다.

태그설명
<fmt:setLocale>언어를 설정
<fmt:message>지정한 언어에 해당하는 언어 표시
<fmt:setBundle>사용할 번들 설정
<fmt:setParam>전달할 매개변수 설정
<fmt:requestEncoding>요청 매개변수의 인코딩 설정

번들(Bundle)properties라는 확장자를 가진 파일을 의미합니다.


숫자, 날짜 포매팅

포매팅 라이브러리는 언어말고도 숫자와 날짜 포맷 설정도 가능합니다. 다음 태그들은 숫자와 날짜포매팅 태그들입니다.

태그설명
<fmt:formatNumber>숫자 포맷 설정
<fmt:formatDate>날짜 포맷 설정
<fmt:timeZone>지정한 국가/지역의 시간 지정
<fmt:setTimeZone>지정한 국가/지역의 시간 지정

<fmt:timeZone>, <fmt:setTimeZone>의 설명이 둘 다 지정한 국가/지역의 시간으로 설정한다고 되어있는데요. <fmt:timeZone>은 태그를 닫고 열은 사이에서만 시간이 적용되고, <fmt:setTimeZone>은 문서 전반에 시간이 적용된다는 차이점이 있습니다.

이때, 국가/지역 설정은 value="국가/지역" 속성을 통해 설정합니다.

<fmt:formatNumber> 속성

숫자 포맷은 다양한 속성들을 통해서 자세한 설정이 가능합니다.

속성설명
value출력할 숫자 설정
type출력 타입 설정. percent -> %, number -> 숫자, currency -> 통화($ 등)
groupingUsing구분자(, 등)를 사용해서 구분할지 설정
currencyCode통화 코드 지정. USD, KRW, JPY 등
currencySymbol통화 표시 기호 설정
varformatNumber 태그의 결과값 저장 변수명
scope변수 스코프 설정
pattern숫자 출력 양식 지정. 자바 DecimalFormat 클래스 형식을 따름

<fmt:formatDate> 속성

속성설명
value출력할 날짜 설정
type출력 타입 설정. data -> 날짜만, time -> 시간만, both -> 날짜와 시간
dateStyle날짜 출력 포맷 지정. DateFormat 클래스의 형식 사용
timeStyle시간 출력 포맷 지정. DateFormat 클래스의 형식 사용
pattern출력 형식 직접 지정. SimpleDateFormat 클래스의 패턴 사용
timeZone특정 나라의 시간대로 설정

formatNumberformatDate의 형식에 등장하는 자바 클래스에 대한 설명은 이 포스트를 참조해주세요.
( + DateFormat 클래스공식 문서)


문자열 처리 함수

문자열 처리도 정말 많이 사용하는 기능인데요. JSTL은 문자열 처리를 지원하기 위해 몇 가지 함수를 제공하고 있습니다.

함수 라이브러리의 접두사는 fn입니다.

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

주의할 점은 여태까지의 태그와는 다르게 함수이기 때문에 꺾쇠<>가 사용되지 않습니다.

다음은 자주 사용되는 JSTL 문자열 처리 함수입니다.

문자열 처리 함수설명리턴값 타입
fn:contains(a, b)문자열 a에 b가 포함되었는지 여부boolean
fn:endWith(a, b)문자열 a가 b로 끝나는지 여부boolean
fn:indexOf(a, b)문자열 a에서 b가 위치한 index 반환(최초 위치)int
fn:length(str)문자열 str의 길이 반환int
fn:replace(str, a, b)문자열 str에서 문자 a를 b로 교체String
fn:toUpperCase(a)문자 a를 모두 대문자로 변환String
fn:toLowerCase(a)문자 a를 모두 소문자로 변환String
fn:subString(str, a, b)문자열 str에서 index 번호 a에서 b까지의 문자열을 잘라서 반환String
fn:split(str, a)문자열 str에서 a 문자를 기준으로 분할String[]
fn:trim(str)문자열 str의 공백 삭제 후 반환String

fn:subString(str, a, b)에서 인덱스 번호 a부터 b까지 자르는데요.
인덱스 번호이기 때문에 0부터 세어서 실제로는 a+1번 문자부터 자르기 시작합니다. 그리고 종료는 b를 포함하지 않기 때문에 b-1번까지 잘라낸다고 보시면 됩니다.

즉, fn:subString("hello", 1, 3)"el"을 반환합니다.

0개의 댓글