STL에서 <% ...%>태그 안의 if문이나 for문 같은 자바코드들은 html태그들과 얽혀서 코드전체를 복잡하게 만든다.
jsp에서 이런 조건문이나 반복문을 <c:if>, <c:choose>, <c:forEach>, <c:forTokens> 등의 JSTL태그를 사용하면 코드의 복잡성을 줄이고 가독성을 높여 유지보수에도 많은 도움이 된다.
JSTL태그를 사용하기 위해 다음의 라이브러리 추가
1. <c:if> 태그
자바언어의 if문의 기능을 제공한다.
| | |
| <c:if test="조건"> ... </c:if>
if 속성값 | |
| | |
<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <c:if test="true">
항상실행됨.
</c:if>
<c:if test="${10>5}">
10이 5보다 크면 실행됨.
</c:if>
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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <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>
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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <c:forEach var="i" begin="1" end="10">
</c:forEach>
<c:set var="arr" value="<%=new int[]{1,2,3} %>"/>
<c:forEach var="x" items="${arr}">
</c:forEach>
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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <c:set var="hobbys" value="게임,야,독서,tv시청,여행"/>
<c:forTokens var="hobby" items="${hobbys}" delims=",">
</c:forTokens>