1. 다국어란 무엇인가?
JSP에서 다국어란 웹 브라우저를 사용하는 국가에 따라 다양한 언어 및 지역을 지원하는 서비스이다.
- 다른 언어와 지역적 차이를 기술 변경 없이 소프트웨어에 바로 적용하는 것
- 국제화(internationalization, i18n), 지역화(localization, L10n)를 포함한다.
2. Locale 클래스를 이용한 다국어 처리 기법에서 현재 웹 브라우저에 미리 정의된 언어나 국가 정보를 가져오는 request 내장 객체의 메소드는 무엇인가? getCountry() 메소드
3. 다국어 처리를 위한 JSTL fmt 태그의 종류에 대해 설명하시오.
Locale을 설정할 수 있는 setLocale 태그, 메세지 처리를 위한 bundle 태그 · message 태그 · setBundle태그, 날짜 형식을 사용하기 위해 formatDate 태그 · parseDate 태그, 숫자 형식을 사용하기 위해 formatNumber 태그 · paraseNumber 태그 등이 존재한다.
4. Locale 클래스를 이용하여 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Internationalization</title>
</head>
<body>
<h4>현재 로케일</h4>
<%
Locale locale = request.getLocale();
%>
<p> 언어 : <%=locale.getDisplayLanguage() %>
<p> 국가 : <%=locale.getDisplayCountry() %>
</body>
</html>
5. JSTL fmt 태그를 이용하여 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.
(과정 1) WebContent/WEB-INF/lib 폴더에 jstl-1.2.jar 파일 업로드
(과정 2) src 폴더에 ch09.com.bundle 폴더를 생성하여 properties 파일 두 개를 생성한다.
(※ 생성 방법은 jihyeong-ji99hy99.tistory.com/120 를 참고하자.)
// myBundle.properties
id=\uC544\uC774\uB514
password=\uBE44\uBC00\uBC88\uD638
button=\uC804\uC1A1
// myBundle_en.properties
id=id
password=password
button=submit
// jstl_fmt.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Internationalization</title>
</head>
<body>
<fmt:setLocale value='<%=request.getParameter("language") %>' />
<fmt:setBundle basename="ch09.com.bundle.myBundle" var="message" />
<p><a href="?language=ko" >Korean</a>|<a href="?language=en">English</a>
<form action="#" name="login_form">
<p> <fmt:message bundle="${message}" key="id" />
: <input type="text" name="id">
<p> <fmt:message bundle="${message}" key="password"/>
: <input type="password" name="passwd">
<p><fmt:message bundle="${message}" key="button" var="btn"/>
<input type="submit" value=${btn}>
</form>
</body>
</html>
6. 다음 조건에 맞게 도서 웹 쇼핑몰을 위한 웹 애플리케이션을 만들고 실행 결과를 확인하시오.
// 나머지 코드는 7장에 올려둔 코드들과 동일하다.
(과정 1) WebContent/WEB-INF/lib 폴더에 jstl-1.2.jar 파일 업로드
(과정 2) src 폴더에 bundle 폴더를 생성하여 properties 파일 두 개를 생성한다.
(※ 생성 방법은 jihyeong-ji99hy99.tistory.com/120 를 참고하자.)
// message.properties
title = \uC0C1\uD488\uB4F1\uB85D
productId = \uC0C1\uD488 \uCF54\uB4DC
name = \uC0C1\uD488\uBA85
unitPrice = \uAC00\uACA9
author = \uC791\uAC00
description = \uC0C1\uC138\uC124\uBA85
publisher = \uCD9C\uD310\uC0AC
category = \uCE74\uD14C\uACE0\uB9AC
unitsInStock = \uC7AC\uACE0\uC218
totalPages = \uCD1D \uD398\uC774\uC9C0
releaseDate = \uCD9C\uD310\uC77C
condition = \uC0C1\uD0DC
productImage = \uC0C1\uD488 \uC774\uBBF8\uC9C0
button = \uBC84\uD2BC
// message_en.properties
title = Product Addition
productId = Product Id
name = Name
unitPrice = Price
author = Authors
description = Description
publisher = Publisher
category = Category
unitsInStock = Units in Stock
totalPages = Total Pages
releaseDate = Release date
condition = Condition
productImage = productImage
button = button
// addProduct.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script type="text/javascript" src="./resources/js/validation.js"></script>
<title>상품 등록</title>
</head>
<body>
<fmt:setLocale value='<%=request.getParameter("language") %>' />
<fmt:bundle basename="bundle.message" >
<%@ include file="menu.jsp" %>
<div class="jumbotron">
<div class="contrainer">
<h1 class="display-3"><fmt:message key="title"/></h1>
</div>
</div>
<div class="container">
<div class="text-right">
<a href="?language=ko">Korean</a> | <a href="?language=en">English</a>
</div>
<form name="newProduct" action="processAddProduct.jsp" class="form-horizontal" method="post" enctype="multipart/form-data">
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="productId"/></label>
<div class="col-sm-3">
<input type="text" id="productId" name="productId" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="name"/></label>
<div class="col-sm-3">
<input type="text" id="name" name="name" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="unitPrice"/></label>
<div class="col-sm-3">
<input type="text" id="unitPrice" name="unitPrice" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="author"/></label>
<div class="col-sm-3">
<input type="text" name="author" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="publisher"/></label>
<div class="col-sm-3">
<input type="text" name="publisher" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="releaseDate"/></label>
<div class="col-sm-3">
<input type="text" name="releaseDate" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="totalPages"/></label>
<div class="col-sm-3">
<input type="text" name="totalPages" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="description"/></label>
<div class="col-sm-5">
<textarea name="description" cols="50" rows="2" class="form-control"></textarea>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="category"/></label>
<div class="col-sm-3">
<input type="text" name="category" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="unitsInStock"/></label>
<div class="col-sm-3">
<input type="text" id="unitsInStrock" name="unitsInstock" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="condition"/></label>
<div class="col-sm-5">
<input type="radio" name="condition" value="New " >
신규 제품
<input type="radio" name="condition" value="Old ">
중고 제품
<input type="radio" name="condition" value="Refurbished">
재생 제품
</div>
</div>
<div class="form-group row">
<label class="col-sm-2"><fmt:message key="productImage"/></label>
<div class="col-sm-5">
<input type="file" name="productImage" class="form-control">
</div>
</div>
<div class="form-group row">
<div class="col-sm-offset-2 col-sm-10">
<input type="button" class="btn btn-primary" value='<fmt:message key="button"/>' onclick="CheckAddProduct()">
</div>
</div>
</form>
</div>
</fmt:bundle>
</body>
</html>
'문제풀이 > 쉽게 배우는 JSP 웹프로그래밍' 카테고리의 다른 글
[쉽게 배우는 JSP 웹프로그래밍] 11장 연습문제 (0) | 2020.11.16 |
---|---|
[쉽게 배우는 JSP 웹프로그래밍] 10장 연습문제 (0) | 2020.11.05 |
[쉽게 배우는 JSP 웹프로그래밍] 8장 연습문제 (0) | 2020.10.21 |
[쉽게 배우는 JSP 웹프로그래밍] 7장 연습문제 (2) | 2020.10.19 |
[쉽게 배우는 JSP 웹프로그래밍] 6장 연습문제 (0) | 2020.10.08 |
댓글