티스토리 뷰
program
[35] JSTL core : 조건,반복 태그 <c:if> <c:choose> <c:forEach> <c:forTokens>
littlecarbb 2014. 9. 4. 19:19Overview
JSTL에서 <% ...%>태그 안의 if문이나 for문 같은 자바코드들은 html태그들과 얽혀서 코드전체를 복잡하게 만든다.
jsp에서 이런 조건문이나 반복문을 <c:if>, <c:choose>, <c:forEach>, <c:forTokens> 등의 JSTL태그를 사용하면 코드의 복잡성을 줄이고 가독성을 높여 유지보수에도 많은 도움이 된다.
JSTL태그를 사용하기 위해 다음의 라이브러리 추가
1. <c:if> 태그
자바언어의 if문의 기능을 제공한다.
<c:if test="조건">...</c:if>if 속성값
- test : 검사조건
-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
</head>
-
<body>
-
<div>
-
<c:if test="true">
-
항상실행됨.
-
</c:if>
-
</div>
-
<div>
-
<c:if test="${10>5}">
-
10이 5보다 크면 실행됨.
-
</c:if>
-
</div>
-
</body>
-
</html>
2. <c:choose>, <c:when>, <c:otherwise> 태그
자바언어의 if-else문이나 switch문 같은 다수의 조건문을 실행하는 기능을 제공한다.
<c:choose><c:when test="조건1">...</c:when><c:when test="조건2">...</c:when><c:otherwise></c:otherwise></c:choose>
-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
</head>
-
<body>
-
<div>
-
<c:set var="age">15</c:set>
-
<c:choose>
-
<c:when test="${age>=20}">
-
성인.
-
</c:when>
-
<c:when test="${age>0 && age<20}">
-
미성년자.
-
</c:when>
-
<c:otherwise>
-
0보다 큰수를 입력하세요.
-
</c:otherwise>
-
</c:choose>
-
</div>
-
</body>
-
</html>
3. <c:forEach> 태그
자바언어의 반복문을 실행하는 기능을 제공한다.
<!--Map, 컬렉션, 배열을 사용하는 경우 : 자바의 for(변수 : 컬렉션) 형태--><c:forEach var="변수" items="컬렉션 변수"></c:forEach><!--자바언어의 for(초기값 ; 조건 ; 증가치) 형태 : 자바의 일반 for문 형태--><c:forEach var="변수" begin="1" end="10" step="1" ></c:forEach>forEach문 varStatus값의 프로퍼티 값의 의미<c:forEach items="컬렉션or배열" varStatus="vs"></c:forEach>
- index : 반복에서 현재 인덱스 ex)vs.index
- count : 반복 횟수 ex) vs.count
- begine : 시작 값
- end : 마지막 값
- step : 반복의 증감치
- first :현재 실행이 반복의 처음이면 true
- last : 현재 실행이 반복의 마직막이면 true
- current : 컬렉션 중 현재 반복에서 사용할 객체
-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
</head>
-
<body>
-
<div>
-
<c:forEach var="i" begin="1" end="10">
-
${i}<br>
-
</c:forEach>
-
</div>
-
<hr>
-
<div>
-
<c:set var="arr" value="<%=new int[]{1,2,3} %>"/>
-
<c:forEach var="x" items="${arr}">
-
${x}<br>
-
</c:forEach>
-
</div>
-
</body>
-
</html>
4. <c:forTokens> 태그
자바의 java.util.StringTokenizer클래스같이 특정문자열에서 구분자를 이용하여 글자를 자르는 기능을 제공한다.
<c:forTokens var="변수" items="문자열" delims="구분자"><c:forTokens>
-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
-
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
<!DOCTYPE html>
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
</head>
-
<body>
-
<div>
-
<c:set var="hobbys" value="게임,야,독서,tv시청,여행"/>
-
<c:forTokens var="hobby" items="${hobbys}" delims=",">
-
${hobby}<br>
-
</c:forTokens>
-
</div>
-
</body>
-
</html>
'program' 카테고리의 다른 글
[25] EL(Expression Language)과 JSTL(JSP Standard Tag Library) (0) | 2014.09.04 |
---|---|
[34] JSTL core : 변수 설정 태그 <c:set> <c:remove> (0) | 2014.09.04 |
eclipse 메모리 및 옵션 설정 (0) | 2014.08.31 |
JSP 게시판 업그레이드 - Spring 연동 3 (구현) (0) | 2014.08.27 |
엑셀 오른쪽부터 문자열 검색하기 (reversed find) (0) | 2014.08.26 |