ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSTL 조건, 반복문 태그
    JSP/JSTL 2015. 5. 14. 13:29
    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 속성값
    • 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>




    'JSP > JSTL' 카테고리의 다른 글

    JSTL ArrayListSize 표현하기!  (0) 2015.08.19
    JSTL Hashtable 사용 시  (0) 2015.08.18
    JSTL choose 태그 예제  (0) 2015.06.22
    JSTL EL 표기법!  (0) 2015.05.18
Designed by Tistory.