본문 바로가기

Programming/국비학원

221012 - JSTL - 코어 / fmt 라이브러리

  • <c:foreach>

<c:foreach items="${리스트가 받아올 배열이름}"
           var="for문 내부에서 사용할 변수"
           varStatus="상태용 변수">
</c:foreach>

 

 

 

  • forEachTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<%
	List dataList = new ArrayList();
	dataList.add("김철수");
	dataList.add("이영희");
	dataList.add("홍길동");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>반복문 연습</title>
</head>
<body>
	<c:forEach var="i" begin="1" end="5" step="1">
		<h2>안녕하세요(i=${i })</h2>
	</c:forEach>
    
	<c:forEach var="i" begin="1" end="10" step="1">
		<h2>${i }개 가격 : (i=${i*200 })</h2>
	</c:forEach>
    
	<c:forEach var="i" begin="1" end="30" step="3" varStatus="loop">
		<c:if test="${loop.last}">
			<h2>마지막 수행했을 때 i=${i}</h2>
		</c:if>
		<h2>i=${i } 반복횟수=${loop.count }</h2>
	</c:forEach>
    
	<c:set var="fruits" value="사과, 감, 포도, 바나나, 귤" />
	<c:forTokens var="token" items="${fruits }" delims=","> <%--delims : 구분자 --%> ////
		<h2>${token }</h2>
	</c:forTokens>
    
	<c:set var="list" value="<%=dataList %>" />
	<c:forEach var="data" items="${list }"> ////
		<h2>${data}님 환영합니다</h2>
	</c:forEach>
</body>
</html>

 

 

 

  • 변수 설정 => 콜렉션 객체 출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*, jsp04.ex01.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
	request.setCharacterEncoding("utf-8");
	List memberList = new ArrayList();
	MemberBean mem1 = new MemberBean("son","1111", "손흥민", "son@gmail.com");
	MemberBean mem2 = new MemberBean("son2","2222", "손흥민2", "son2@gmail.com");
	MemberBean mem3 = new MemberBean("son3","3333", "손흥민3", "son3@gmail.com");
	MemberBean mem4 = new MemberBean("son4","4444", "손흥민4", "son4@gmail.com");
	MemberBean mem5 = new MemberBean("son5","5555", "손흥민5", "son5@gmail.com");
	memberList.add(mem1);
	memberList.add(mem2);
	memberList.add(mem3);
	memberList.add(mem4);
	memberList.add(mem5);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>조건문 실습2</title>
</head>
<body>
	<c:set var="memberList" value="<%=memberList %>"/>
	<table border="1" align="center">
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>비밀번호</th><th>이름</th><th>이메일</th>
		</tr>
		
		<c:forEach var="i" begin="0" end="4" step="1">
		<tr>
			<td>${memberList[i].id }</td>
			<td>${memberList[i].pwd }</td>
			<td>${memberList[i].name }</td>
			<td>${memberList[i].email }</td>
		</tr>
		</c:forEach>

	</table>
</body>
</html>

//
아이디 비밀번호 이름 이메일
son 1111 손흥민 son@gmail.com
son2 2222 손흥민2 son2@gmail.com
son3 3333 손흥민3 son3@gmail.com
son4 4444 손흥민4 son4@gmail.com
son5 5555 손흥민5 son5@gmail.com

 

 

 

  • 변수 & items 속성 설정 => 콜렉션 객체 출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*, jsp04.ex01.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
	request.setCharacterEncoding("utf-8");
	List memberList = new ArrayList();
	MemberBean mem1 = new MemberBean("son","1111", "손흥민", "son@gmail.com");
	MemberBean mem2 = new MemberBean("son2","2222", "손흥민2", "son2@gmail.com");
	MemberBean mem3 = new MemberBean("son3","3333", "손흥민3", "son3@gmail.com");
	MemberBean mem4 = new MemberBean("son4","4444", "손흥민4", "son4@gmail.com");
	MemberBean mem5 = new MemberBean("son5","5555", "손흥민5", "son5@gmail.com");
	memberList.add(mem1);
	memberList.add(mem2);
	memberList.add(mem3);
	memberList.add(mem4);
	memberList.add(mem5);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>조건문 실습2</title>
</head>
<body>
	<c:set var="memberList" value="<%=memberList %>"/>
    
	<table border="1" align="center">
    
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>비밀번호</th><th>이름</th><th>이메일</th>
		</tr>
		
		<c:forEach var="member" items="${memberList }"> ////
		<tr>
			<td>${member.id }</td>
			<td>${member.pwd }</td>
			<td>${member.name }</td>
			<td>${member.email }</td>
		</tr>
		</c:forEach>
        
	</table>
</body>
</html>

 

 

 

 

  • <c:url> : url 정보 저장

<c:url var="변수명" value="url경로">
    <c:param name="매개변수명" value="전달값" />
</c:url>

 

 

 

  •  
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>페이지에 전달</title>
</head>
<body>
	<c:url var="urlMem" value="member8.jsp"> ////
		<c:param name="id" value="hong"/>
		<c:param name="pwd" value="12345"/>
		<c:param name="name" value="홍길동"/>
		<c:param name="email" value="hong@gmail.com"/>
	</c:url>
	<a href="${urlMem }">회원정보 출력</a> ////
</body>
</html>

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*, jsp04.ex01.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
	request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>url 실습</title>
</head>
<body>
	<table border="1" align="center">
	
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>비밀번호</th><th>이름</th><th>이메일</th>
		</tr>
		
		<tr>
			<td>${param.id }</td> ////
			<td>${param.pwd }</td> ////
			<td>${param.name }</td> //// 
			<td>${param.email }</td> ////
		</tr>

	</table>
</body>
</html>

//이동 시 주소
http://localhost:8070/jsp04/member8.jsp?id=hong&pwd=12345&name=%ed%99%8d%ea%b8%b8%eb%8f%99&email=hong%40gmail.com 

 

=>

 

urlTest.jsp에서 a태그에 파라미터 정보 저장
a태그 통해 member8.jsp 방문시 get 방식으로 요청 파라미터 전달됨

 

 

 

 

  • <c:redirect> : 해당 페이지로 바로 리다이렉트

<c:redirect url="리다이렉트할 URL">
    <c:param name="매개변수명" value="전달값"/>
</c:redirect>

 

 

 

  •  
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>페이지에 전달</title>
</head>
<body>
	<c:redirect url="member8.jsp">
		<c:param name="id" value="hong"/>
		<c:param name="pwd" value="12345"/>
		<c:param name="name" value="홍길동"/>
		<c:param name="email" value="hong@gmail.com"/>
	</c:redirect>
	<a href="${urlMem }">회원정보 출력</a>
</body>
</html>

=> 파라미터 전달하며 member8.jsp로 바로 이동

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*, jsp04.ex01.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
	request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>url 실습</title>
</head>
<body>
	<table border="1" align="center">
	
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>비밀번호</th><th>이름</th><th>이메일</th>
		</tr>
		
		<tr>
			<td>${param.id }</td>
			<td>${param.pwd }</td>
			<td>${param.name }</td>
			<td>${param.email }</td>
		</tr>

	</table>
</body>
</html>

//
아이디 비밀번호 이름 이메일
hong 12345 홍길동 hong@gmail.com

 

 

 

 

  • <c:out> : 출력

<c:out value="${출력할 값}" />

 

출력값 없을 때 default 값 설정 가능 <default="기본값">
escape 문자 사용 가능 <escapeXml="false">

 

 

 

  •  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 창</title>
<script type="text/javascript">
	function fn_sendMember(){
		let frmMember = document.frmMember;

		frmMember.method="post";
		frmMember.action="member9.jsp"; ////
		frmMember.submit(); 
	}
</script>
</head>
<body>
	<form name=frmMember>
		<h2>회원가입 창</h2>
		<table>
			<tr>
				<td>아이디</td>
				<td><input type="text" name="id"></td>
			</tr>
			<tr>
				<td>비밀번호</td>
				<td><input type="password" name="pwd"></td>
			</tr>
			<tr>
				<td>이름</td>
				<td><input type="text" name="name"></td>
			</tr>
			<tr>
				<td>이메일</td>
				<td><input type="text" name="email"></td>
			</tr>
		</table>
		<input type="button" value="가입하기" onclick="fn_sendMember()">
		<input type="reset" value="다시 입력">
		<input type="hidden" name="command" value="addMember"> 	</form>
</body>
</html>

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*, jsp04.ex01.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% 
	request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>url 실습</title>
</head>
<body>
	<table border="1" align="center">
	
		<tr align="center" bgcolor="beige">
			<th>아이디</th><th>비밀번호</th><th>이름</th><th>이메일</th>
		</tr>
		
		<c:choose>
			<c:when test="${empty param.name }">
				<tr align="center">
					<td colspan="4">이름을 입력해주세요</td>				
				</tr>
			</c:when>
			
			<c:otherwise>
				<tr align="center">
					<td><c:out value="${param.id }" /></td> ////JSTL
					<td><c:out value="${param.pwd }" /></td> ////
					<td>${param.name }</td> //표현언어
					<td>${param.email }</td>
				</tr>
			</c:otherwise>
		</c:choose>

	</table>
</body>
</html>

 

 

 

  • escape 문자
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>escape 변환</title>
</head>
<body>
	<h2>escape 변환하기</h2>
	<h2>
		<pre>
			<c:out value="&lt;" escapeXml="true" />
			<c:out value="&lt;" escapeXml="false" />
			<c:out value="&gt;" escapeXml="true" />
			<c:out value="&gt;" escapeXml="false" />
			<c:out value="&amp;" escapeXml="true" />
			<c:out value="&amp;" escapeXml="false" />
		</pre>
	</h2>
</body>
</html>

//
escape 변환하기
&lt;
<
&gt;
>
&amp;
&

 

 

 

 

코어 라이브러리 문제
  • forEach로 구구단 출력
  •  
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구구단</title>
</head>
<body>
	<h2>출력할 구구단을 지정해주세요</h2>
	<form action="guguResult.jsp" method="get">
		출력할 단 : <input type="text" name="dan"><br>
		<input type="submit" value="구구단 출력">
	</form>
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<% request.setCharacterEncoding("utf-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구구단 출력</title>
</head>
<body>
	<c:set var="dan" value="${param.dan }" />
			<h2 align="center">${dan }단</h2>
	<c:forEach var="i" begin="1" end="9" step="1">
		<table border="1" align="center" >
			<tr align="center">
				<td width=50>${dan } X ${i }</td><td width=20>${dan * i }</td>
			</tr>
		</table>
	</c:forEach>
</body>
</html>

 

 

 

  • 상품목록 리스트 (표현언어, forEach)

상품이미지 상품이름 선택(체크박스)

 

 

 

  •  
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<% String[] goods = {"냉장고","컴퓨터","세탁기","에어컨","청소기"}; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>상품목록</title>
</head>
<body>
	<c:set var="goods" value="<%=goods%>"/>
	<table border="1" align="center">
		<tr>
			<th>상품 이미지</th><th>상품 이름</th><th>선택하기</th>
		</tr>
		<c:forEach var="i" begin="0" end="4" step="1">
			<tr>
				<td><img src="images/${i }.jpg" width="100" height="100"></td>
				<td align="center">${goods[i]}</td>
				<td align="center"><input type="checkbox"  name="chk${i}"></td>
			<tr>
		</c:forEach>	

	</table>
</body>
</html>

 

 

 

 

https://gangzzang.tistory.com/entry/JSP-JSTLJSP-Standard-Tag-Library-%EA%B5%AD%EC%A0%9C%ED%99%94-%ED%83%9C%EA%B7%B8%ED%8F%AC%EB%A7%B7%ED%8C%85
https://luigi-yoon.tistory.com/12

JSTL - fmt 라이브러리

특정 지역에 따른 다국어 처리, 숫자/날짜 포매팅 수행

 

 

 기능  태그   설명 
 로케일 지정  setLocale  Locale을 지정
 requestEncoding  요청 파라미터의 캐릭터 인코딩을 지정
 메시지 처리  bundle  사용할 번들을 지정
 message  지역에 알맞은 메시지를 출력
 setBundle  리소스 번들을 읽어와 특정 변수에 저장
 숫자 및 날짜 포맷팅  formatNumber  숫자를 포맷팅
 formatDate  Date 객체를 포맷팅
 parseDate  문자열로 표시된 날짜를 분석해서 Date 객체로 변환
 parseNumber  문자열로 표시된 날짜를 분석해서 숫자로 변환
 setTimeZone  시간대 정보를 특정 변수에 저장
 timeZone  시간대를 지정

 

 

 

※ 아스키코드 한글 호환
help - install new software - add.. 에 주소 입력 (http://propedit.sourceforge.jp/eclipse/updates/)

Properties Editor 체크 

 

 

 

 

  • 다국어

패키지 우클릭 - new - other - general - file 
=> member.properties, member_en.properties, member_ko.properties 생성

 

 

 

  • 리소스 번들 파일 => 번들이름_언어(_국가).properties
○ member.properties

mem.title=\uD68C\uC6D0 \uC815 \uBCF4 
mem.name=\uC774\uB984:\uD64D\uAE38\uB3D9
mem.address=\uC8FC\uC18C:\uC11C\uC6B8\uC2DC \uAC15\uB0A8\uAD6C
mem.job=\uC9C1\uC5C5:\uAC1C\uBC1C\uC790



○ member_ko.properties 

mem.title=\uD68C\uC6D0 \uC815 \uBCF4 
mem.name=\uC774\uB984:\uD64D\uAE38\uB3D9
mem.address=\uC8FC\uC18C:\uC11C\uC6B8\uC2DC \uAC15\uB0A8\uAD6C
mem.job=\uC9C1\uC5C5:\uAC1C\uBC1C\uC790



○ member_en.properties

mem.title=memberList
mem.name=name:hong gil-dong
mem.address=address:gang-nam gu, seoul
mem.job=job:software engineer

 

 

○ main.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>다국어 지원 홈페이지</title>
</head>
<body>
	<a href="main_ko.jsp">한국어</a>
	<a href="main_en.jsp">영어</a>
	<fmt:bundle basename="resource.member"> ////
		<h1>회원정보</h1>
		<h2>이름 : 홍길동</h2>
		<h2>주소 : 서울시 강남구</h2>
		<h2>직업 : 개발자</h2>
	</fmt:bundle>
</body>
</html>



○main_ko.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>다국어 지원 홈페이지</title>
</head>
<body>
	<fmt:setLocale value="ko_KR"/> ////
	<a href="main_ko.jsp">한국어</a>
	<a href="main_en.jsp">영어</a>
	<fmt:bundle basename="resource.member"> ////
		<h1><fmt:message key="mem.title"/></h1> ////
		<h1><fmt:message key="mem.name"/></h1>
		<h1><fmt:message key="mem.address"/></h1>
		<h1><fmt:message key="mem.job"/></h1>
	</fmt:bundle>
</body>
</html>



○main_en.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>다국어 지원 홈페이지</title>
</head>
<body>
	<fmt:setLocale value="en_US"/>
	<a href="main_ko.jsp">Korean</a>
	<a href="main_en.jsp">English</a>
	<fmt:bundle basename="resource.member">
		<h1><fmt:message key="mem.title"/></h1>
		<h1><fmt:message key="mem.name"/></h1>
		<h1><fmt:message key="mem.address"/></h1>
		<h1><fmt:message key="mem.job"/></h1>
	</fmt:bundle>
</body>
</html>

 

 

 

 

  • 숫자 포매팅
  •  
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>포매팅 태그 라이브러리2</title>
</head>
<body>
	<h2>포매팅 라이브러리 예제</h2>
	<c:set var="price" value="45000000"/>
	<fmt:formatNumber value="${price }" type="number" var="priceNumber"/>
	<h2>상품 판매 가격 = ${priceNumber}</h2>
	<c:set var="rate" value="0.2" />
	<fmt:formatNumber value="${rate }" type="percent" var="rateNum" />
	<h2>할인율 : ${rateNum}</h2>
	<c:set var="price2" value="23000"/>
	<fmt:formatNumber value="${price2}" type="currency" var="priceNumber2" currencySymbol="₩" /> //currencySymbol 디폴트: ₩
	<h2>상품 판매 가격 = ${priceNumber2}원</h2>

</body>
</html>

//
포매팅 라이브러리 예제
상품 판매 가격 = 45,000,000
할인율 : 20%
상품 판매 가격 = ₩23,000원