프로그래밍 언어/자바 웹

<c:forEach> 태그를 이용한 실습

· 코딩마이데이

<c:forEach> 태그는 JSP 페이지에서 반복문을 수행하는 태그이며, 사용 형식은 다음과 같습니다.

 

<c:forEach var="변수이름" items="반복할객체이름" begin="시작값" end="마지막값"

                   step="증가값" varStatus="반복상태변수이름">

      ...

</c:forEach>

 

여기서 var는 반복할 변수 이름을, items는 반복할 변수 이름을, items는 반복할 객체 이름을 지정합니다. begin과 end는 각각 반복 시작 및 종료 값을 , step은 한 번 반복할 때마다 반복 변수를 증가시킬 값을, varStatus는 반복 상태 속성을 지정합니다.

 

varStatus의 여러 가지 속성을 아래 표에 정리했습니다.

속성 설명
index int items에서 정의한 항목을 가리키는 index 번호입니다. 0부터 시작합니다.
count int 몇 번째 반복인지 나타냅니다. 1부터 시작합니다.
first boolean 첫 번째 반복인지 나타냅니다.
last boolean 마지막 반복인지 나타냅니다.

 

<c:forEach>로 반복문을 만들어 사용해 보겠습니다.

 

1. member6.jsp를 다음과 같이 작성합니다. 먼저 자바 코드로 ArrayList 객체를 생성하여 문자열을 저장한 후 <c:forEach> 태그에서 사용할 수 있도록 <c:set> 태그로 변수 list에 재할당합니다. 그리고 varStatus의 loop 속성을 이용해 반복 횟수를 출력합니다. <c:forEach> 태그의 items에 ArrayList를 설정한 후 반복문 수행 시 ArrayList에 저장된 문자열을 반복 변수 data에 한 개씩 가져와 출력합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*"
    pageEncoding="UTF-8"
    isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	List dataList = new ArrayList();
	dataList.add("hello");
	dataList.add("world");
	dataList.add("안녕하세요!!");
%>
<c:set var="list" value="<%=dataList %>" />
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>반복용 실습</title>
</head>
<body>
	<c:forEach var="i" begin="1" end="10" step="1" varStatus="loop">
		i = ${i} &nbsp;&nbsp;&nbsp;   반복횟수: ${loop.count} <br>
	</c:forEach>
	<br>
	<c:forEach var="i" begin="1" end="10" step="2">
		5 * ${i} = ${5*i} <br>
	</c:forEach>
	<br>
	<c:forEach var="data" items="${list}">
		${data} <br>
	</c:forEach>
	<br>
	<c:set var="fruits" value="사과, 파인애플, 바나나, 망고, 귤" />
	<c:forTokens var="token" items="${fruits}" delims=",">
		${token} <br>
	</c:forTokens>
</body>
</html>

 

2. http://localhost:8080/pro14/test03/member6.jsp로 요청하여 결과를 확인합니다.

실행 결과

 

3. 이번에는 <c:forEach> 태그를 이용해 ArrayList에 저장된 회원 정보를 출력해보겠습니다. <c:forEach> 태그를 이용하면 ArrayList에 저장된 객체에 편리하게 접근할 수 있습니다. 다음과 같이 <c:forEach> 태그의 반복 변수 i를 ArrayList의 인덱스로 사용해서 저장된 회원 정보를 차례대로 출력하도록 member7.jsp를 작성합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
	import="java.util.*, sec01.ex01.*"
    pageEncoding="UTF-8"
    isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
   request.setCharacterEncoding("UTF-8");
   List membersList = new ArrayList();	
   MemberBean m1 = new MemberBean("son","1234", "손흥민", "son@test.com");
   MemberBean m2 = new MemberBean("ki","4321", "기성용", "ki@test.com");
   MemberBean m3 = new MemberBean("park", "1212", "박지성", "park@test.com");
   membersList.add(m1);
   membersList.add(m2);
   membersList.add(m3);
%>
<c:set var="membersList" value="<%= membersList %>" />
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보 출력창</title>
</head>
<body>
	<table border="1"  align="center" >
    <tr align="center" bgcolor="lightgreen">
      <td width="7%"><b>아이디</b></td>
      <td width="7%"><b>비밀번호</b></td>
      <td width="5%" ><b>이름</b></td>
      <td width="5%"><b>이메일</b></td>
	</tr>
	 <c:forEach var="i" begin="0" end="2" step="1" >	
	   <tr align="center">
	      <td>${membersList[i].id}</td>
	      <td>${membersList[i].pwd}</td>
	      <td>${membersList[i].name}</td>
	      <td>${membersList[i].email}</td>
	   </tr>
	 </c:forEach>
	</table>
</body>
</html>

 

4. http://localhost:8080/pro14/test03/member7.jsp로 요청하여 결과를 확인합니다.

 

5. 이번에는 <c:forEach>문은 items 속성에 memberList를 할당한 후 실행하여 자동으로 var의 member에 memberList의 MemberBean 객체가 차례대로 할당되도록 member8.jsp를 작성합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="java.util.*, sec01.ex01.*"
    pageEncoding="UTF-8" 
    isELIgnored="false"  %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
<%
   request.setCharacterEncoding("UTF-8");
   List membersList = new ArrayList();	
   MemberBean m1 = new MemberBean("son","1234", "손흥민", "son@test.com");
   MemberBean m2 = new MemberBean("ki","4321", "기성용", "ki@test.com");
   MemberBean m3 = new MemberBean("park", "1212", "박지성", "park@test.com");
   membersList.add(m1);
   membersList.add(m2);
   membersList.add(m3);
%>
<c:set var="membersList" value="<%= membersList%>" />
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>회원 정보 출력 창</title>
</head>
<body>
	<table border="1"  align="center" >
	    <tr align="center" bgcolor="lightgreen">
	      <td width="7%"><b>아이디</b></td>
	      <td width="7%"><b>비밀번호</b></td>
	      <td width="5%" ><b>이름</b></td>
	      <td width="5%"><b>이메일</b></td>
		</tr>
		<c:forEach var="member" items="${membersList}" >	
	   		<tr align="center">
		      <td>${member.id}</td>
		      <td>${member.pwd}</td>
		      <td>${member.name}</td>
		      <td>${member.email}</td>
		   </tr>
	 	</c:forEach>
	</table>
</body>
</html>

 

6. http://localhost:8090/pro14/test03/member4.jsp로 요청하여 결과를 확인합니다.

실행결과