코어(core)태그 - 흐름제어
흐름제어는 JSP 페이지에서 if-else 블럭이나 for 블럭 등 프로그램의 흐름을 제어하는 부분을 말합니다 .JSTL에서 흐름제어에 관련되어 if, choose, forEach, forToken 네개의 흐름제어 태그를 제공합니다.
1. if 태그
if 태그는 if 블럭과 같은 기능을 수행합니다. 단순한 if 블럭을 쉽게 대체할 수 있는 JSTL 태그입니다. if 태그의 test 속성에 조건값을 주고 조건의 결과가 true나 false 값에 해당하여 블럭을 수행하거나 수행하지 않습니다. 보통 test 속성에는 EL 을 사용합니다.
<c:if test=""> 수행할 내용 </c:if>
사용 예제
request.setAttribute("isCorrect", true);
<c:if test="${isCorrect}">
수행할 내용
</c:if>
위 예제는 조건이 true 이기 때문에 if 블럭을 수행합니다.
2. choose 태그
choose 태그는 자바의 switch 구문과 if-else 블럭을 혼합한 형태로 다수의 조건문을 하나의 블록에서 수행하고자 할 때 사용합니다. choose 태그는 자식 태그로 when 태그와 otherwise 태그를 가지고 있니다. when 태그의 test 속성에 조건을 부여하고, 조건이 참일 경우 when 태그 블럭을 수행합니다. 만약 모든 when 태그의 조건이 false 이며 otherwise 태그 영역을 수행합니다.
<c:when test="조건">처리할 내용</c:when>
<c:when test="조건">처리할 내용</c:when>
<c:otherwise>모든 when 조건이 false 일 경우 수행할 부분</c:otherwise>
</c:choose>
3. forEach 태그
forEach 태그는 배열, Collection 또는 Map 객체에 저장되어 있는 값들을 순차적으로 처리할 때 사용하는 태그로 자바의 for 문을 대신하여 사용할 수 있습니다. forEach 태그는 콜렉션 객체들의 값을 순차적으로 접근하며 수행합니다.
<c:forEach var="안에서 사용될 객체변수명" items="콜렉션객체">
콜렉션에 접근할 때는 "${객체변수명.속성}" 형태로 접근합니다.
<c:/forEach>
콜렉션 반복을 사용할 때 items 속성에 콜렉션 객체를 지정하고, 반복문 안에서는 콜렉션 객체를 하나씩 가져와 반복문을 수행합니다. 이때, 반복문안에서 접근하기 위한 객체 변수명이 var 속성에 지정하는 값입니다. 콜렉션의 종류는 배열, java.util.Collection, java.util.Map, java.util.Iterator, java.util.Enumeration, java.servlet.jsp.jstl.sql.Result 클래스가 있습니다.
request.setAttribute("memberList", memberList);
<c:forEach var="member" items="${memberList}">
회원의 이름 : ${member.name}
회원의 나이 : ${member.age}
</c:forEach>
또한, forEach 태그를 사용하여 일반적인 반복문을 수행할 수도 있습니다.
수행할 내용
</c:forEach>
일반 반복은 자바의 for 문과 같습니다. 시작값을 begin 속성에 지정한 후 종료값을 end 속성에 지정합니다. 증가값은 step 속성으로 지정하면 시작값부터 종료값까지 수행을 하며 step에서 지정한 만큼 값의 증가가 있습니다.
또한, varStatues 속성에 변수명을 지정하고 변수명을 통해 반복시 가지고 있는 반복값들에 접근할 수 있습니다. 아래는 forEach 태그가 가지는 반복속성입니다.
current : 반복 라이운 아이템
index : 0을 시작으로 하는 인덱스값
count : 1을 시작으로 하는 인덱스
first : 반복의 첫번째
last : 반복의 마지막
begin : 시작값
end : 종료값
step : 증감값
예 제
${x.count } , ${x.index } , ${x.first } , ${x.last } , ${x.begin } , ${x.end } , ${x.step }<br/>
</c:forEach>
[결과]
1 , 1 , true , false , 1 , 12 , 1
2 , 2 , false , false , 1 , 12 , 1
...
forTokens 태그는 StringTokenizer 클래스 같이 문자열을 파싱하여 반복 처리합니다. forTokens 태그의 문법은 다음과 같습니다.
<c:forTokens var="token" items="문자열" delims="구분자">
${token}
</c:forTokens>
예를 들어 콤마(,)와 점(.)을 구분자로 사용하여 문자열로부터 토큰을 추출하고 싶다면 다음처럼 사용하면 됩니다.
<c:forTokens var="token" items="빨강, 주황, 노란, 초록" delims=",.">
${token}
</c:forTokens>
'자바(Java) > JAVA 2EE' 카테고리의 다른 글
엑셀 파일 업로드 받아 서블릿으로 엑셀 파일 처리 (0) | 2009.09.10 |
---|---|
코어(core) 태그 - URL, 페이지 제어 (0) | 2009.09.09 |
코어(core) 태그 - 변수 지정과 삭제 (0) | 2009.09.09 |
JSTL이 제공하는 태그의 종류 (0) | 2009.09.09 |
커스텀 태그 라이브러리와 JSTL (0) | 2009.09.09 |