본문 바로가기
문제풀이/쉽게 배우는 JSP 웹프로그래밍

[쉽게 배우는 JSP 웹프로그래밍] 9장 연습문제

by 그적 2020. 11. 2.

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 파일 업로드

jstl-1.2.jar
0.40MB

 (과정 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 파일 업로드

jstl-1.2.jar
0.40MB

 (과정 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>

댓글