WEB/JSTL
[JSTL] if, when, forEach
hvoon
2022. 9. 9. 20:16
if
-c:if test 조건절이 참이면 /c:if까지의 내용을 웹페이지에 적용 또는 표시하고
아니면 표시, 적용 없이 지나감.
-test 안의 조건식은 EL 문법을 이용함.
<c:if test="${비교연산}"></c:if>
<c:if test="${param.color==1}">
<span style="color:red; font-size:180%; font-weight:bold;">빨강</span>
</c:if>
<c:if test="${param.color==2}">
<span style="color:green; font-size:180%; font-weight:bold;">
초록</span>
</c:if>
<c:if test="${param.color==3}">
<span style="color:blue; font-size:180%; font-weight:bold;">
파랑</span>
</c:if>
When
<c:choose>
<c:when test="${param.fruit==1}"><!-- if -->
<span style="color:red; font-size:180%; font-weight:bold;">
사과</span>
</c:when>
<c:when test="${param.fruit==2}"><!-- else if -->
<span style="color:green; font-size:180%; font-weight:bold;">
멜론</span>
</c:when>
<c:when test="${param.fruit==3}"><!-- else if -->
<span style="color:yellow; font-size:180%; font-weight:bold;">
바나나</span>
</c:when>
<c:otherwise><!-- else -->
<span style="color:silver; font-size:180%; font-weight:bold;">
기타</span>
</c:otherwise>
</c:choose>
forEach
배열 저장
<%
String [] movieList={"타이타닉","시네마 천국","혹성 탈출","킹콩"};
request.setAttribute("mList",movieList);
// Attribute는 HashMap 형식의 리스트이므로
// 키 값만 존재하면 어떤 자료들도 보관 가능.
// ArrayList 등도 위의 배열과 같이 손쉽게 보관하거나 전달 가능.
%>
1. JSP 문법으로 출력
<%
String [] mlist=(String[])request.getAttribute("mList");
for(String s:mlist)
out.print(s+"<br>");
%>
2. EL과 JSTL을 이용해 출력(배열 요소를 이용)
<c:forEach items="${mList}" var="movie">
${movie}<br/>
</c:forEach>
<!--
items="" : 반복 실행에 이용할 리스트 또는 배열을 지정
var="": 배열 또는 리스트의 값을 한번에 하나씩 저장할 때 사용할 변수 이름
-->
Table에 forEach 사용하기
<%
String [] movieList={"타이타닉","시네마 천국","혹성 탈출","킹콩"};
request.setAttribute("mList",movieList);
%>
<table border="1" style="width:700px; text-align:center">
<tr>
<th>index</th><th>count</th><th>title</th>
</tr>
<c:forEach items="${mList}" var="movie" varStatus="state">
<tr><td>${state.index}</td><td>${state.count}</td>
<td>${movie }</td></tr>
</c:forEach>
</table>
<!--
varStatus: 반복실행의 상태값을 갖고 있는 클래스
status: 현재 반복 순서 객체 변수
${status.count): 1부터 시작한 반복의 현재 아이템
${status,index}: 0부터 시작한 반복의 현재 아이템
-->
-${status.first}: 현재 루프가 처음이면 true 리턴
<ul>
<c:forEach var="movie" items="${mList}"
varStatus="status">
<c:choose>
<c:when test="${status.first}">
<li style="font-weigth:bold; color:red;">
${movie}
</li>
</c:when>
<c:otherwise>
<li>${movie}</li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
-${status.last}: 현재 루프가 마지막이라면 true 리턴
<c:forEach var="movie" items="${mList}"
varStatus="status">
${movie}
<c:if test="${not status.last }">, </c:if>
</c:forEach>

-${status.current}: 현재 아이템
-${status.begin}: 시작값
-${status.end}: 끝값
-${status.step}: 증가값
<c:forEach var="cnt" begin="1" end="10" varStatus="status">
${cnt}<c:if test="${not status.last }">, </c:if>
</c:forEach>
<table border="1" style="width:50%; text-align:center;"
align="left">
<tr><th>index</th><th>count</th><th>cnt</th></tr>
<c:forEach var="cnt" begin="7" end="10"
varStatus="status">
<tr><td>${status.index}</td>
<td>${status.count}</td>
<td>${cnt}</td></tr>
</c:forEach>
</table>