본문 바로가기
Study/JSP

[JSP] JSTL (2) - jstl 라이브러리 설치하기, <c:> 태그 사용하기

by YoungD 2023. 9. 3.

 

   

   <!-- JSTL에서 기본 기능을 사용하기 위한 taglib 추가 -->

   <!-- 추가로 JSTL Lib를 프로젝트에 추가 -->

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

 

  • prefix : JSTL 태그를 사용할때 태그 이름 앞에 붙일 접두사 (alias 같은 별칭과 비슷한 개념)
  • uri : 태그 라이브러리의 name space URI 식별자

 

 

 


 

< 라이브러리 설치하기 >

 

1. 구글에 maven repository 검색

 

2. JSTL을 검색해줍니다

 

3. 두 번째걸로 클릭

 

4. 1.2 버전 클릭

 

5. files 에서 jar 설치

 

6. 설치 완료되면 src - main - webapp -WEB-INF - lib 안에 복붙

 


 

JSTL 사용하기

 

JSTL 사용하여 page영역에 값 넣기

 

   <c:set var="num" value="100" scope="session" />      =  request.setAttribute("num", "100");

   ${num} <!-- El을 이용해서 출력 -->

   <c:out value="${num}" />  <!-- <c:out> 을 통해 출력

  • <c:set>: 변수에 값을 설정,  기본적으로 page영역에 저장이 된다
  • 특정 영역에 저장하고 싶다면 scope속성 활용

 

 

 

JSTL을 활용한 조건문

 

  • 위에 저장된 num의 값이 100보다 크거나 같다면 '100보다 큽니다' 아니면 '100보다 작습니다'를 출력

   <c:if test="${num ge 100}">

   100보다 크거나 같습니다.

   </c:if>

 

   <c:if test="${num lt 100}">

   100보다 작습니다.

   </c:if> <br>

 

 

 

 

<c:choose>: 여러 조건에 따라 처리를 달리 할 때

 

  • 다중 if문
  • time 값이 아침 -> 토스트 / 점심 -> 비빔밥 / 저녁-> 족발 / 그외-> 라면

   <c:set var="time" value="점심" />

   <c:choose>

   <c:when test="${time == '아침' }">

   토스트

   </c:when>

   <c:when test="${time == '점심' }">

   비빔밥

   </c:when>

   <c:when test="${time == '저녁' }">

   족발

   </c:when>

   <c:otherwise>

   라면

   </c:otherwise>

   </c:choose>

 

출력 결과

 

 

 

 

<c:forEach>: 배열과 같은 집합체에 저장되어 있는 값들을 반복 처리를 위해 사용

 

 

<c:forEach [var="변수 이름" items="배열과 같은 집합체">
몸체
</c:forEach>

 

 

  • JSTL 반복문
  • = for(int i = 1; i <= 10; i++) { 

   <c:forEach var="i" begin="1" end="10" step="1">  <!-- 1부터 10까지 1씩 증가하는 반복문 -->

   ${i} <br>

   </c:forEach>

 

 

 

  • 구구단 만들기

   <table border="1px">

      <c:forEach var="i" begin="2" end="5" step="1">

          <tr>

              <c:forEach var="j" begin="1" end="9" step="1">

                   <td>${i}*${j}=${i*j}</td>

              </c:forEach>

          </tr>

      </c:forEach>

   </table>

 

출력 결과

 

 

 

  • ArrayList 출력하기

   <%

        ArrayList<String> idol = new ArrayList<String>();

        idol.add("제이홉");

        idol.add("지수");

        idol.add("제니");

        idol.add("로제");

        idol.add("리사");

        pageContext.setAttribute("idol", idol);

   %>

 

 

(기존 출력 방법)

   for (String name : idol) {

   <%=name%>

   }

( <c:forEach> 사용해서 출력 ) ->

   <c:forEach items="${idol}" var="name">

   ${name}

   </c:forEach>

 

 

출력 결과

 

 

  • DTO 출력하기

 객체생성

   <%

   MemberDTO dto1 = new MemberDTO("youngD", "1234", "영디", "광주");

   MemberDTO dto2 = new MemberDTO("oldD", "5678", "올드디", "서울");

   MemberDTO dto3 = new MemberDTO("kidsD", "9999", "키즈디", "영국");

   MemberDTO dto4 = new MemberDTO("babyD", "7777", "베이비디", "전주");

   MemberDTO dto5 = new MemberDTO("DD", "4567", "디디", "제주");

 

   ArrayList<MemberDTO> list = new ArrayList<MemberDTO>();

   list.add(dto1);

   list.add(dto2);

   list.add(dto3);

   list.add(dto4);

   list.add(dto5);

   pageContext.setAttribute("list", list);

   %>

 

- table 태그를 사용해서 넣어주기

   <table border="1px">

   <tr>

   <td>번호</td>

   <td>아이디</td>

   <td>비밀번호</td>

   <td>닉네임</td>

   <td>주소</td>

   </tr>

 <c:set var="i" value="1" />

   <c:forEach items="${list}" var="dto">

      <tr>

        <td>${i}</td>

        <td>${dto.id}</td>

        <td>${dto.pw}</td>

        <td>${dto.nick}</td>

        <td>${dto.addr}</td>

     </tr>

   <c:set var="i" value="${i + 1}" />

   </c:forEach>

 

 

 

varStatus 속성 사용하여 출력하기

  • varStatus: 배열같은 집합체에서 항목의 인덱스 값을 사용해야 할 때 사용

                        인덱스와 반복 횟수 등과 같은 반복상태 관련 정보를 프로퍼티로 알려준다.

 

   <c:forEach varStatus="i" items="${list}" var="dto">

      <tr>

         <td>${i.count}</td>   <!-- count 프로퍼티 : 루핑을 돌 때 현재 몇 번째를 반복 중인지 알려준다. 1부터 순서 부여 -->

         <td>${dto.id}</td>

         <td>${dto.pw}</td>

         <td>${dto.nick}</td>

         <td>${dto.addr}</td>

      </tr>

   </c:forEach>

 

출력 결과

 

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

[JSP] HashMap  (2) 2023.09.24
[JSP] command패턴  (2) 2023.09.21
[JSP] FrontController 패턴  (2) 2023.09.18
[JSP] JSTL (1) - 페이지값과 dto 가져오기, 내장객체 접근하기, parameter 처리  (2) 2023.09.01