- 반복제어
- foreach
<c:forEach /> Tag
- 객체 전체에 걸쳐 반복 실행에 사용
- <c:forEach var="현재 아이템의 변수명"
items="반복 데이터가 있는 아이템 Collection 명"
begin="시작 값, 기본값은 0"
end="종료 값"
step="증가 값"
varStatus="반복 상태 값을 지닌 변수" />
※ varStatus는 forEach의 상태를 알 수 있는 값이 들어 있다.
- $(변수.current} : 현재의 인덱스
- $(변수.index} : 0부터의 인덱스
- $(변수.count} : 1부터의 인덱스
- $(변수.first} : 현재 루프가 처음인지 확인
- $(변수.last} : 현재 루프가 마지막인지 확인
- $(변수.begin} : forEach문의 시작 값
- $(변수.end} : forEach문의 끝 값
- $(변수.step} : forEach문의 증가 값
출처: http://hackersstudy.tistory.com/42 [공대인들이 직접쓰는 컴퓨터공부방]
예제)
1. 1부터 100까지 홀수의 합
1 2 3 4 5 6 7 | <h4>1부터 100까지 홀수의 합</h4> <c:set var = "sum" value="0"/> <c:forEach var = "i" begin="1" end = "100" step="2"> <c:set var="sum" value="${sum + i }"/> </c:forEach> 결과 = ${sum} | cs |
== step으로 증가하는 값을 설정할 수 있다.
2. int형 배열
1 | <c:set var = "intArray" value = "<%= new int[]{1,2,3,4,5} %>"/> | cs |
1 2 3 4 | <h4>int형 배열</h4> <c:forEach var ="i" items ="${intArray }" begin="2" end="4" varStatus="status"> ${status.index } - ${status.count }-[${i }] </c:forEach> | cs |
== items에는 반드시 '집합데이터만' 들어가야하며,
이때 시작과 끝인 begin,end는 '인덱스 번호'를 지칭한다.
intArray에 저장된 {1,2,3,4,5}의 인덱스번호 2부터 시작해서 4로 끝나는것은
3,4,5를 꺼내겠다는 의미가 된다.
3. Map
1 2 3 4 5 | <% HashMap<String,Object> mapData = new HashMap<String,Object>(); mapData.put("name","이름"); mapData.put("today", new java.util.Date()); %> | cs |
1. key - value를 가지는 HashMap객체를 선언후
put으로 key-value값을 가지는 두개의 데이터를 저장한다.
1 | <c:set var = "map" value = "<%=mapData %>"/> | cs |
2. EL태그로 사용할 수 있도록, mapData객체를 변수명 map으로 선언.
1 2 3 4 | <h4>Map</h4> <c:forEach var ="i" items = "${map}"> ${i.key } = ${i.value }<br> </c:forEach> | cs |
3. EL태그의 map을 다시 foreach의 변수 i로 선언
== items에는 반드시 '집합데이터만' 들어가야하며,
HashMap을 저장하는 Map을 items로 저장할때에는
key - value 값이 쌍으로 저장된다.
EL태그로 쓸 변수명 i.key , i.value로 출력해올 수 있다.
- forToken
<c:forTokens /> Tag
- 문자열을 구분자(delimiter)로 분할
- <c:forTokens var="현재 아이템의 변수 명"
items="반복 데이터가 있는 아이템 Collection 명"
delims="구분자, 여러개 지정 가능"
begin="시작 값, 기본 값은 0"
end="종료 값"
step="증가 값"
varStatus="반복 상태 값을 지닌 변수" />
출처: http://hackersstudy.tistory.com/42 [공대인들이 직접쓰는 컴퓨터공부방]
예제)
1 2 3 4 5 6 | <h4>콤마와 점을 구분자로 사용</h4> <c:forTokens var = "token" items = "빨강색,주황색.노란색.초록색,파랑색,남색.보라색" delims = ",."> ${token} </c:forTokens> | cs |
== 구분자로 지정할것들을 delims = ""
큰따옴표 안에 다 넣어주면 된다.
'JAVA > JSP, JSTL, EL' 카테고리의 다른 글
JSTL - redirect / url / import(URL관련태그) (0) | 2018.07.25 |
---|---|
JSTL - out / catch(기타코어태그) (0) | 2018.07.25 |
JSTL - if / choose(흐름제어) (0) | 2018.07.25 |
JSTL - 개념 / set (0) | 2018.07.25 |
EL - 클래스와 jsp연결후 EL사용법 (2) | 2018.07.24 |