본문 바로가기
교재 실습/자바 웹 개발 워크북

59. JSTL 사용하기 (4)

by Jint 2022. 7. 3.

- <c:forEach> 태그

반복적인 작업을 정의할 때 사용한다. 목록에서 값을 꺼내어 처리하고 싶을 때 이 태그를 사용하면 된다.

● 문법
<c:forEach var="변수명" items="목록데이터" begin="시작인덱스" end="종료인덱스">
    콘텐츠
</c:forEach>

item 속성의 값으로 다음의 값이 올 수 있다.

더보기

▶ 배열

▶ java.util.Collection 구현체. 예) ArrayList, LinkedList, Vector, EnumSet 등

▶ java.util.Iterator 구현체

▶ java.util.Enumeration 구현체

▶ java.util.Map 구현체

▶ 콤마(,) 구분자로 나열된 문자열. 예) 홍길동, 임꺽정, 일지매

var 속성은 반복문을 돌면서 items에서 꺼낸 항목 값을 가리키는 참조 변수이다.

begin과 end 속성은 items를 반복할 때 몇 번째 인덱스에서 시작하고, 몇 번째 인덱스에서 종료할 것인지를 지정한다. 다음은 배열을 반복할 경우의 예제 코드이다(그림 1).

<h2>c:forEach 태그</h2>

<h3>반복문 - 배열</h3>
<% pageContext.setAttribute("nameList", new String[] {"홍길동", "임꺽정", "일지매"}); %>
<ul>
<c:forEach var="name" items="${nameList}">
	<li>${name}</li>	
</c:forEach>
</ul>

그림 1 (실행 결과)

 

다음과 같이 반복 대상에 대해 시작 인덱스와 종료 인덱스를 지정할 수 있다(그림 2).

<h3>반복문 - 배열의 시작 인덱스와 종료 인덱스 지정</h3>
<% pageContext.setAttribute("nameList2", 
  new String[]{"홍길동", "임꺽정", "일지매", "주먹대장", "똘이장군"}); %>
<ul>
<c:forEach var="name" items="${nameList2}" begin="2" end="3">
	<li>${name}</li>	
</c:forEach>
</ul>

그림 2 (실행 결과)

 

다음은 ArrayList 객체에 대해 반복문을 적용한 예이다(그림 3).

<h3>반복문 - ArrayList 객체</h3>
<% 
ArrayList<String> nameList3 = new ArrayList<String>();
nameList3.add("홍길동");
nameList3.add("임꺽정");
nameList3.add("일지매");
nameList3.add("주먹대장");
nameList3.add("똘이장군");
pageContext.setAttribute("nameList3", nameList3); 
%>
<ul>
<c:forEach var="name" items="${nameList3}">
	<li>${name}</li>	
</c:forEach>
</ul>

그림 3 (실행 결과)

 

다음과 같이 콤마(,)로 구분된 문자열도 반복문을 적용할 수 있다(그림 4).

<h3>반복문 - 콤마로 구분된 문자열</h3>
<% pageContext.setAttribute("nameList4", "홍길동,임꺽정,일지매,주먹대장,똘이장군"); %>
<ul>
<c:forEach var="name" items="${nameList4}">
	<li>${name}</li>	
</c:forEach>
</ul>

그림 4 (실행 결과)

 

배열이나 List 없이 임의적으로 특정 횟수만큼 반복문을 돌리고 싶을 때는 다음과 같이 하면 된다(그림 5).

<h3>반복문 - 특정 횟수 만큼 반복</h3>
<ul>
<c:forEach var="no" begin="1" end="6">
	<li><a href="jstl0${no}.jsp">JSTL 예제 ${no}</a></li>	
</c:forEach>
</ul>

그림 5 (실행 결과)

 

- <c:forTokens> 태그

이 태그를 사용하면 문자열을 특정 구분자(delimiter)로 분리하여 반복문을 돌릴 수 있다.

<%//<c:forTokens>태그 예제%>
<h2>c:forTokens 태그</h2>

<% pageContext.setAttribute("tokens","v1=20&v2=30&op=+"); %>
<ul>
<c:forTokens var="item" items="${tokens}" delims="&">
	<li>${item}</li>	
</c:forTokens>
</ul>

다음은 "v1=20&v2=30&op=+" 문자열을 '&'를 기준으로 분리하여 반복한 결과이다(그림 6).

그림 6 (실행 결과)

 

- <c:url> 태그

URL을 만들 때 사용하는 태그이다. 이 태그를 사용하면 매개변수를 포함한 URL을 손쉽게 만들 수 있다(그림 7).

<%//<c:url>태그 예제%>
<h2>c:url 태그</h2>

<c:url var="calcUrl" value="http://localhost:9999/web05/calc/Calculator.jsp">
	<c:param name="v1" value="20"/>
	<c:param name="v2" value="30"/>
	<c:param name="op" value="+"/>
</c:url>
<a href="${calcUrl}">계산하기</a>

그림 7 (실행 결과)

다음은 앞의 코드를 실행하고 나서 만들어진 <a> 태그의 소스와 실행 결과이다(그림 8).

<a href="http://localhost:9999/web05/calc/Calculator.jsp?v1=20&v2=30&op=%2b">계산하기<a/>

그림 8 (<a> 태그 소스 실행 결과)

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글

61. JSTL 사용하기 (6)  (0) 2022.07.05
60. JSTL 사용하기 (5)  (0) 2022.07.04
58. JSTL 사용하기 (3)  (0) 2022.06.30
57. JSTL 사용하기 (2)  (0) 2022.06.29
56. JSTL 사용하기 (1)  (0) 2022.06.28

댓글