개발자의 끄적끄적

[jstl] c:forEach 사용법 본문

개발/java & jsp

[jstl] c:forEach 사용법

효벨 2020. 4. 11. 02:00
728x90
반응형

[jstl]  c:forEach 사용법

 

<c:forEach> 커스텀액션

자바프로그램의 for 문에 해당하는 기능을 제공하는 커스텀액션이다. 즉 이 액션을 이용하면 특정 HTML코드를 일정 횟수만큼 반복해서 출력할 수 있다.

 

for문은 자바에서 아주 자주 사용되는 문법이며 가장 흔히 볼수 있는 것은 다음형태의 for문이다.

 for (int cnt =0; cnt <10; cnt++) { // cnt초기값을 0으로 하고 10번 반복하며 1식증가시켜라
    System.out.println("hi");  // 반복 실행할 명령문.

}

 

위 for문은 카운터 변수인 cnt 값을 0~9까지 1씩 증가시키면서 주어진 명령문을 반복 실행 하는 문장이다. 결과적 으로 명령문은 10번 반복된다.

<c:forEach> 커스텀액션을 이용해서 반복실행되는 코드를 작성하기 위해서는 이 액션에 begin end라는 이름의 애트리 뷰트를 쓰고 거기에 각각 카운터 변수의 시작 값과 끝값을 지정하면 된다. 

<c:forEach begin="1" end="10">

    hi<br> <%!-- 반복수행할 명령문--%>

</c:forEach>

 

반복 출력할 코드안에서 카운터 변수 값을 사용해야 할 경우엔 <c:forEach>액션태그안에 var라는 애트리뷰트를 쓰고 그값으로 카운터 변수의 이름을 지정하면 된다. 그러면 <c:forEach>액션의 시작 태그와 끝 태그 사이에서 EL식을 이용해서 이변수를 사용할수 있다.

 <c:forEach var="cnt" begin="1" end="10">

      ${cnt} <br>

 </c:forEach> 

위 코드는 1부터 10까지 순서대로 출력한다.

 

카운터 변수의 값은 기본적으로 1씩증가하지만 때로 그와 다른 증가치를 사용해야 할 경우도 있다. 그럴때는 <c:forEach>액션에 step이라는 애트리뷰트를 추가하고 거기에 증가치를 지정하면된다.

 <c:forEach var="cnt" begin="1" end="10" step="2">

       ${cnt}<br>

  </c:forEach>

위 코드가 실행하면 1,3,5,7,9의 숫자가 출력된다.

 

<c:forEach>커스텀액션을 사용한 Jsp 예

Echo.jsp

<%@page contentType="text/html; charset=utf-8" %>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<HTML>

    <HEAD><TITLE>메아리</TITLE></HEAD>

    <BODY>

         <c:forEach var = "cnt" begin="1" end=" 5" >

              <font size=${cnt} > 야 호 </font><br>

          </c:forEach>

     </BODY>

</HTML>

실행화면

  야 호

  야 호

 야 호

 야 호

 야 호

위와 같은 결과가 출력된다.

 

<c:forEach>커스텀 액션을 이용하면 여러 개의 항목으로 구성된 데이터를 순서대로 출력하는 일도 가능하다  예를 들면 배열의 항목을 출력할 수도 있는데 그렇게 하기 위해서는 이 액션태그에 items 애트리뷰트를 쓰고 그곳에 배열 이름을 지정하면 된다. 그리고 이때 var라는 이름의 애트리뷰트도 함께 쓰는데 이 애트리뷰트의 값은 배열의 항목을 담는 변수 이름으로 사용한다.

<c:forEach var="str" items="${arr}">

    ${str}<br>

</c:forEach>

str = 배열의 각 항목을 저장할 변수

arr = 배열의 이름

<c:forEach>커스텀액션 사용 Jsp

<%@page contentType="text/html; charset=utf-8" %>

<%

    String arr[] ={"불고기","닭고기","소고기"};

    request.setAttribute("MENU","arr);   //request영역에 배열을 저장한다.

%>

<jsp:forward page="LunchMenuView.jsp" />

                                    ↓호출

             

<%@page contentType="text/html; charset=utf-8" %>

<%@taglib prefix="c" uri="http:/java.sun.com/jsp/jstl/core>

<HTML>

    <HEAD><TITLE>구내식당</TITLE></HEAD>

     <BODY>

          <H3>오늘의 점심메뉴</H3>

          <UL>

               <c:forEach var="dish" items="${MENU}">

                   <LI><${dish}</LI> //배열항목을 순더대로 가져다가 출력한다.

                </c:forEach>

          </UL>

      </BODY>

</HTML>

 

실행결과

http:localhost:8080/test/LuncthMenu.jsp

 오늘의 점심 메뉴입니다

 

  • 불고기
  • 닭고기
  • 소고기

 

 

 

출처 : https://m.blog.naver.com/PostView.nhn?blogId=kalmia888&logNo=177171972

반응형
Comments