Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSP에서 숫자를 구문 분석하는 방법 – JSTL fmt:parseNumber 태그 완벽 가이드

JSTL <fmt:parseNumber> 태그란?

JSP에서 문자열 형태의 숫자, 퍼센트, 통화 값을 실제 수치 데이터로 변환해야 할 때가 있습니다. 이럴 때 사용하는 것이 바로 JSTL의 <fmt:parseNumber> 태그입니다. 이 태그는 지정된 형식에 맞는 문자열을 해석(parse)하여 프로그램에서 사용할 수 있는 숫자 값으로 변환해 줍니다.

주요 속성

<fmt:parseNumber> 태그에서 사용할 수 있는 주요 속성은 다음과 같습니다.

속성설명필수 여부기본값
value읽어 들일(구문 분석할) 숫자 값아니오태그 본문(body)
typeNUMBER(숫자), CURRENCY(통화), PERCENT(퍼센트) 중 하나아니오number
parseLocale숫자를 구문 분석할 때 사용할 로케일(locale)아니오기본 로케일
integerOnlytrue이면 정수 부분만 구문 분석하고, false이면 부동소수점 숫자까지 분석아니오false
pattern사용자 정의 구문 분석 패턴아니오없음
timeZone표시되는 날짜의 시간대아니오기본 시간대
var구문 분석된 숫자를 저장할 변수의 이름아니오페이지에 직접 출력
scope변수를 저장할 범위(scope)아니오page

pattern 속성의 역할

pattern 속성은 <fmt:formatNumber> 태그의 pattern 속성과 동일한 방식으로 작동합니다. 다만 차이점이 있다면, 출력 시에는 숫자를 어떤 형식으로 보여줄지 결정하는 반면, 구문 분석 시에는 파서가 어떤 형식의 입력을 기대해야 하는지를 알려준다는 점입니다. 예를 들어 "#,##0.00" 같은 패턴을 지정하면 콤마가 포함된 숫자 문자열도 정확하게 해석할 수 있습니다.

사용 예제

다음 예제는 소수점이 포함된 숫자 문자열을 구문 분석하는 기본적인 방법과, integerOnly 속성을 사용해 정수 부분만 추출하는 방법을 보여줍니다.

<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fmt" uri = "https://java.sun.com/jsp/jstl/fmt" %>
<html>
   <head>
      <title>JSTL fmt:parseNumber Tag</title>
   </head>
   <body>
      <h3>Number Parsing:</h3>
      <c:set var = "balance" value = "1250003.350" />
      <fmt:parseNumber var = "i" type = "number" value = "${balance}" />
      <p>Parsed Number (1) : <c:out value = "${i}" /></p>
      <fmt:parseNumber var = "i" integerOnly = "true"
      type = "number" value = "${balance}" />
      <p>Parsed Number (2) : <c:out value = "${i}" /></p>
   </body>
</html>

먼저 <c:set> 태그로 변수 balance에 "1250003.350"이라는 문자열을 저장한 뒤, 두 가지 방식으로 구문 분석을 수행합니다. 첫 번째는 전체 숫자를 그대로 분석하는 경우이고, 두 번째는 integerOnly 속성을 true로 설정하여 소수점 아래를 버리고 정수만 가져오는 경우입니다.

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Number Parsing:
Parsed Number (1) : 1250003.35
Parsed Number (2) : 1250003

정리

<fmt:parseNumber> 태그를 활용하면 화면이나 외부 소스에서 넘어온 형식화된 숫자 문자열을 손쉽게 수치 값으로 변환할 수 있습니다. 특히 type 속성으로 통화나 퍼센트 형식을 처리하고, integerOnly와 pattern 속성을 조합하면 다양한 상황에 유연하게 대응할 수 있습니다.