본문 바로가기
CLASS/SPRING,JSTL

#6-3 / JSTL 문법3 - 반복문,varStatus

by hingu 2024. 7. 15.

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