프로그래밍/JSP Servlet

JSP/Servlet – JSTL <fmt:setBundle>과 <fmt:bundle> <fmt:message> 커스텀 액션 사용하기

가카리 2016. 2. 3. 22:52
반응형

 

JSP/Servlet – JSTL <fmt:setBundle>과 <fmt:bundle> <fmt:message>커스텀 액션 사용하기

 

한글 웹페이지와 영어 웹페이지를 단 하나의 JSP파일로 만들때는 <fmt:setBundle>과 <fmt:bundle> 커스텀 액션을 사용합니다.

 

이를 사용하기 위해서는 프로퍼티 파일을 만들어야 되는데 데이터를 키=값으로 모아놓은 텍스트 파일을 말합니다.

 

이 프로퍼티 파일은 ASCII코드로 만들어야 하므로 이클립스에 플러그인을 설치해야합니다. ([이클립스] properties editor 플러그인 설치 간단 가이드 참고)

 

< fmt:setBundle> 액션은 사용할 프로퍼티 파일을 지정하는 역할을 합니다. 이 액션에 basename이라는 애트리뷰트를 쓰고 애트리뷰트 


값으로 사용할 프로퍼티 파일의 이름을 지정하면 됩니다. 


파일의 이름은 반드시 _언어코드.properties확장자를 제외한 나머지 부분만 작성합니다.

 

    <fmt:setBundle basename="파일명"/>

 

<fmt:message>커스텀 액션은 그 프로퍼티의 파일을 가져올 수 있습니다.

 

    <fmt:message key="프로퍼티 파일의 데이터의 키"/>

 

 

예제는 프로퍼티 파일 2개와 JSP 파일 한 개로 구성됩니다. 프로퍼티 파일은 반드시 WEB-INF/classes 폴더 안에 넣어야 합니다.

 

MyIntro.jsp

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

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

<fmt:setBundle basename="Intro"/> <!-- 프로퍼티 파일의 대표명 -->

<!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=EUC-KR">

<title>Insert title here</title>

</head>

<body>

    <fmt:message key="TITLE"/><BR>

    <fmt:message key="GREETING"/><BR>

    <fmt:message key="TEXT"/><BR>

</body>

</html>

 

Intro_en.properties

 

TITLE=gakari

GREETING=hello

TEXT=nice to meet you

 

Intro_ko.properties

 

TITLE=가카리

GREETING=안녕하세요

TEXT=반갑습니다.

 

실행 화면

인터넷 브라우저의 언어가 한글이면 다음과 같이 나옵니다.

인터넷 브라우저의 언어가 영어면 다음과 같이 나옵니다.

 

 

위의 예제에서 MyIntro와 동일하게 동작하는 JSP파일을 작성해봅시다.

 

MyIntro2.jsp

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

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

<fmt:setBundle basename="Intro"/>

<fmt:message var="title" key="TITLE"/>

<fmt:message var="greeting" key="GREETING"/>

<fmt:message var="text" key="TEXT"/>

<!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=EUC-KR">

<title>Insert title here</title>

</head>

<body>

    ${title } <BR><!-- 위에서 만든 EL 사용합니다. -->

    ${greeting } <BR>

    ${text } <BR>

</body>

</html>

 

실행 화면

역시 동일한 화면이 나오네요.

 

마지막으로 <fmt:bundle> 커스텀 액션입니다.

 

이 액션은 <fmt:bundle>의 시작 태그와 끝 태그 사이에 있는 코드에만 영향을 미치는 점이 다릅니다.

 

 

MyIntro3.jsp

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

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

<fmt:bundle basename="Intro">

    <fmt:message var="title" key="TITLE"/>

    <fmt:message var="greeting" key="GREETING"/>

    <fmt:message var="text" key="TEXT"/>

</fmt:bundle>

<!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=EUC-KR">

<title>Insert title here</title>

</head>

<body>

    ${title } <BR><!-- 위에서 만든 EL 사용합니다. -->

    ${greeting } <BR>

    ${text } <BR>

</body>

</html>

 

실행 화면

 

반응형