jsp <c:forEach> 태그

hoonak·2023년 6월 27일

jsp 페이지에서 반복문을 수행하는 태그.

형식

<c:forEach var = "변수이름" items = "반복할객체이름" begin = "시작값" end = "마지막값" step = "증가값 varStatus = "반복상태변수이름">
...
<c:forEach>

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

varStatus의 속성

  • index : items에서 정의한 항목을 가리키는 index 번호임. 0부터 시작함.
  • count : 몇 번째 반복인지 나타냄. 1부터 시작함.
  • first : 첫 번째 반복인지 나타냄.
  • last : 마지막 반복인지 나타냄.

예 1)

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

member6.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
	import = 'java.util.*'
	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 %>'/> <!-- 표현 언어에서 사용할 수 있도록 c:set 태그를 이용해 변수에 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> 	<!-- 반복 변수 i를 1부터 10까지 1씩 증사키시면서 반복문을 수행함. -->
	</c:forEach>
	<br>
	<c:forEach var = 'i' begin = '1' end = '10' step = '2'> <!-- 반복 변수 i를 1부터 10까지 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)

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

member7.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
	import = 'java.util.*, sec01.ex01.*'  
	isELIgnored="false"  
%>
<%@ taglib prefix = "c" uri = 'http://java.sun.com/jsp/jstl/core' %>
<%
	request.setCharacterEncoding("utf-8");
	List memberList = 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");
	memberList.add(m1);
	memberList.add(m2);
	memberList.add(m3);
%>
<c:set var = 'memberList' value = '<%= memberList %>'/>
<!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 = '7%'><b>이름</b></td>
			<td width = '7%'><b>이메일</b></td>
		</tr>
        <!-- memberList에 저장된 회원 수만큼 반복 변수 i를 0부터 1씩 증가시키면서 forEach문을 실행. -->
		<c:forEach var = 'i' begin = '0' end = '2' step = '1'> 
			<tr align = 'center'>
            <!-- 반복 변수 i를 ArrayList의 인덱스로 사용해 회원정보를 차례대로 출력함. -->
				<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>
profile
Hello World!

0개의 댓글