while문 , forEach문 有 => forEach만 거의 사용!
JSTL 에 반복문 처리 => 배열형태로 출력(원시배열,클래스배열)
JSTL에서는 클래스배열 사용 권고 (ArrayList,LinkedList,Map)
<%@ taglib prefix="cr" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
⚡ forEach- 원시배열
attribute 사용하지 않을시 jsp문법 <%= 변수%> 으로 사용!
item 속성
모든 배열 값을 처리할 때 사용하는 속성값
배열에만 사용!
begin, end (사용해도되고 안해도됨)
begin : 시작값
end : 종료값<!-- 원시배열 --> <% String data[] = new String[]{"hong","kim","park"}; String data2[] = new String[]{"1","2","3"}; request.setAttribute("data2",data2); %> <ol> <!-- jsp변수를 items 속성에서 받은 후 var로 출력 --> <cr:forEach var="dt" items="<%=data%>"> <li>${dt}</li> </cr:forEach> </ol> <ol> <!-- jsp변수를 items 속성에서 받은 후 var로 출력 --> <cr:forEach var="dt2" items="<%=data%>" begin="1" end="3"> <li>${dt2}</li> </cr:forEach> </ol> <ol> <!-- jsp에서 attribute로 생성된 이름을 item으로 받은후 var로 출력 --> <cr:forEach var="dt3" items="${data2}"> <li>${dt3}</li> </cr:forEach> </ol>
<!-- 조건문 + 반목문 : data 배열값중 park이라는 사용자만 출력 --> <cr:forEach var="dt5" items="<%=data%>"> <cr:if test="${dt5 == 'park'}"> <div>${dt5}</div> </cr:if> </cr:forEach>
⚡ forEach - Class 배열<% ArrayList<String> al = new ArrayList<String>(); al.add("테스트1"); al.add("테스트2"); al.add("테스트3"); al.add("테스트4"); %> <ul> <cr:forEach var="dt4" items="<%=al %>"> <li>${dt4}</li> </cr:forEach> //배열값 순서대로 출력 </ul>
⚡ varStatus , class 1차,2차배열
배열번호 순서 갯수..등 핸들링 가능한 속성값
index : 배열노드번호
first : true(첫번째 데이터) , false(그 외의 데이터) <=> last : 반대
count : 데이터 +1씩 카운팅 (+2 는 n.count+2)
✅ 1차배열<% ArrayList<String> al = new ArrayList<String>(); al.add("홍길동1"); al.add("홍길동2"); al.add("홍길동3"); al.add("홍길동4"); al.add("홍길동5"); %> <cr:forEach var="z" items="<%=al %>" varStatus="n"> 데이터 기준 : ${n.last}, 번호 : ${n.index}, 데이터값 : ${z}, 데이터 카운팅: ${n.count} <br> </cr:forEach>
✅ 2차배열 - 기본<% ArrayList<ArrayList<String>> al2 = new ArrayList<ArrayList<String>>(); ArrayList<String> data1 = new ArrayList<String>(); ArrayList<String> data2 = new ArrayList<String>(); data1.add("강감찬1"); data1.add("강감찬2"); data1.add("강감찬3"); data1.add("강감찬4"); data1.add("강감찬5"); data2.add("A"); data2.add("B"); data2.add("C"); data2.add("D"); data2.add("E"); al2.add(data1); al2.add(data2); %> <cr:forEach var="a" items="<%=al2%>"> //2바퀴 <cr:forEach var="b" items="${a}"> //5바퀴 ${b}<br> </cr:forEach> </cr:forEach>
✅ 2차배열 각 데이터를 출력하는 방식<!-- 각각의 그룹 배열에 특정 값만 출력하는 형태 --> <cr:forEach var="a2" items="<%=al2%>"> <!-- 알아서 두개다 찍음 --> ${a2.get(1)} </cr:forEach><br><br> <!-- 2차배열의 각각 데이터를 출력하는 방식 --> <cr:set var="bb" value="<%=al2.get(1)%>"></cr:set> <cr:forEach var="aa" items="<%=al2.get(0)%>" varStatus="n"> <!-- 5바퀴 --> 고객명 : ${aa} , type : ${bb.get(n.index)}<br> </cr:forEach>
⚡ 원시 2차배열
<% String members[][] = { {"유관순1","유관순2","유관순3","유관순4"}, {"A","B","B","D"}, }; %> <cr:set var="dd" value="<%=members[1]%>" /> <cr:forEach var="cc" items="<%=members[0]%>" varStatus="no"> 고객명: ${cc} , type : ${dd[no.index]}<br> </cr:forEach>
'CLASS > SPRING,JSTL' 카테고리의 다른 글
#6-5 / JSTL - 외부페이지 로드 (0) | 2024.07.15 |
---|---|
#6-4 / JSTL - database 연결 (0) | 2024.07.15 |
#6-2 / JSTL 문법2 - 조건문 (1) | 2024.07.15 |
#6-1 / JSTL 문법 - 1 (0) | 2024.07.15 |
#5-4 / [ legacy ] 로그인 내가 해봉거 (0) | 2024.07.12 |