티스토리 뷰

Overview

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 : 검사조건
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <!DOCTYPE html>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Insert title here</title>
  6. </head>
  7. <div>
  8. <c:if test="true">
  9. 항상실행됨.
  10. </c:if>
  11. </div>
  12. <div>
  13. <c:if test="${10>5}">
  14. 10이 5보다 크면 실행됨.
  15. </c:if>
  16. </div>
  17. </body>
  18. </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>
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <!DOCTYPE html>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Insert title here</title>
  6. </head>
  7. <div>
  8. <c:set var="age">15</c:set>
  9. <c:choose>
  10. <c:when test="${age>=20}">
  11. 성인.
  12. </c:when>
  13. <c:when test="${age>0 && age<20}">
  14. 미성년자.
  15. </c:when>
  16. <c:otherwise>
  17. 0보다 큰수를 입력하세요.
  18. </c:otherwise>
  19. </c:choose>
  20. </div>
  21. </body>
  22. </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 : 컬렉션 중 현재 반복에서 사용할 객체
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <!DOCTYPE html>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Insert title here</title>
  6. </head>
  7. <div>
  8. <c:forEach var="i" begin="1" end="10">
  9. ${i}<br>
  10. </c:forEach>
  11. </div>
  12. <hr>
  13. <div>
  14. <c:set var="arr" value="<%=new int[]{1,2,3} %>"/>
  15. <c:forEach var="x" items="${arr}">
  16. ${x}<br>
  17. </c:forEach>
  18. </div>
  19. </body>
  20. </html>


4. <c:forTokens> 태그

자바의 java.util.StringTokenizer클래스같이 특정문자열에서 구분자를 이용하여 글자를 자르는 기능을 제공한다.

<c:forTokens var="변수" items="문자열" delims="구분자">
<c:forTokens>
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <!DOCTYPE html>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Insert title here</title>
  6. </head>
  7. <div>
  8. <c:set var="hobbys" value="게임,야,독서,tv시청,여행"/>
  9. <c:forTokens var="hobby" items="${hobbys}" delims=",">
  10. ${hobby}<br>
  11. </c:forTokens>
  12. </div>
  13. </body>
  14. </html>

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함