티스토리 뷰

FULL STACK/JSP&SERVLET

JSTL Core

publepuble 2019. 1. 21. 14:55

1. Core Tag의 이해

  • JSTL 태그 라이브러리 중에 가장 많이 사용하는 태그이다.
  • <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>로 선언을 해줘야 사용할 수 있다.

1.1 <c:set/>, <c:remove/>

  • 변수의 선언 및 제거 역할을 한다.
  • set : JSP의 setAttribute()와 같은 역할.
  • remove : JSP의 removeAttribute()와 같은 역활
<c:set/>, <c:remove/> Syntax 및 예
<!-- scope 속성은 선택적이며 page로 기본 설정되어 있다. -->
<c:set  var="변수명"  value="할당된 값"
        scope="변수의 유효 범위 page|request|session|application" />

<!-- 간단 사용 예 -->
<c:set var="country" value="Korea" />
<c:set var="intArray" value="<%=new int[] {1,2,3,4,5} %>" />
<c:remove var="country" />

 

1.2 <c:out/>

  • 변수의 출력 기능을 한다. JSP의 표현식(<%= %>)을 대체하는 기능이다.
  • escapeXML값이 true일 경우 값 중에 포함된 <,>,&,'," 문자들을 각각 <, >, &, ', "로 변환하여 출력 한다.
  • default 속성과 excapeXML 속성을 사용하지 않는 경우 EL형식으로 많이 사용한다.
<c:out/> Syntax 및 예
<!-- Syntax -->
<c:out var="변수명" default="기본값" escapeXML="true|false" />

<!-- 간단 사용 예 -->
<p><c:out value="${country}" default="Korea" escapeXml="true"/></p>
<p>${country}</p>
<p>${intArray[0]}</p>

 

1.3 <c:if/>

  • 조건문으로 if문과 동일하지만 else 구문이 없다.
  • 테스트의 결과를 var와 scope 속성을 통해 범위 변수로 할당할 수 있다.
  • 이 기능은 테스트 비용이 비쌀 경우 유용하다.
<c:if/> Syntax 및 예
<!-- Syntax -->
<c:if test="expression"  var="name"  scope="scope">
body content
</c:if>

<!-- 간단 사용 예 -->
<c:set var="login" value="true" />

<c:if test="${!login}"> <p><a href="/login.ok">로그인</a></p></c:if>
<c:if test="${login}"> <p><a href="/logout.ok">로그아웃</a></p></c:if>

<!-- 아래 예제와 같이 null 비교를 하지 않고 empty 비교를 하면 null과 ""를 동시에 체크할 수 있다. -->
<c:if test="${!empty country}"><p><b>${country}</b></p></c:if>
 
 

1.4 <c:choose/>, <c:when/>, <c:otherwise/>

  • java의 swith문과 비슷하지만 문자열 비교도 가능하다.
  • <c:if/>문에 else 구문이 없기 때문에 else의 대체 기능으로 많이 사용한다
<c:choose/>, <c:when/>, <c:otherwise/> Syntax 및 예
<!-- Syntax -->
<c:choose>
<c:when test="expression">
body content
</c:when>
...
<c:otherwise>
body content
</c:otherwise>
</c:choose>

<!-- 간단 사용 예 -->
<c:choose>
  <c:when test="${login}">
    <p><a href="/logout.ok">로그아웃</a></p>
  </c:when>
  <c:otherwise>
    <p><a href="/login.ok">로그인</a></p>
  </c:otherwise>
</c:choose>
 
 

1.5 <c:forEach/>

  • 반복문을 실행할 때 사용 한다.
  • 정수 범위내의 반복(이를 테면, 자바의 for 문)과 컬렉션내의 반복(자바의 Iterator와 Enumeration 클래스)을 지원한다.
  • begin : 시작값 , end : 마지막값 , step : 증가값, var 변수, items:컬렉션 객체, varStatus : 추가속성값
<c:forEach/> Syntax 및 예
<!-- 정수 범위내의 반복 Syntax -->
<c:forEach var="name" varStatus="name"
            begin="expression" end="expression" step="expression">
  body content
</c:forEach>

<!-- 컬렉션 범위내의 반복 Syntax -->
<c:forEach var="name" items="expression" varStatus="name"
           begin="expression" end="expression " step="expression">
  body content
</c:forEach>

<!-- forEach 정수 범위내의 반복 -->
<c:forEach var="i" begin="0" end="10" step="2" varStatus="x">
  <p> i = ${i}, i*i = ${i * i} <c:if test="${x.last}">, last = ${i}</c:if> </p>
</c:forEach> 

<!-- forEach 컬렉션 범위내의 반복 -->
<%
  java.util.List list = new java.util.ArrayList(); 

  java.util.Map map = new java.util.HashMap();
  map.put("color","red");
  list.add(map);
  
  map = new java.util.HashMap();
  map.put("color","blue");
  list.add(map);
  
  map = new java.util.HashMap();
  map.put("color","green");
  list.add(map);
  
  request.setAttribute("list", list);
%>

<c:forEach var="map" items="${list}" varStatus="x">
  <p> map(${x.index}) = ${map.color}  </p>
</c:forEach>
 
 
  • LoopTagStatus 객체의 속성
    속성메소드설명
    currentgetCurrent()현재 아이템
    indexgetIndex()제로 기반(zero-based) 인덱스 값
    countgetCount()1 기반(one-based) 인덱스 값
    firstisFirst()첫 번째 값 여부
    lastisLast()마지막 값 여부
    begingetBegin()begin 속성의 값
    endgetEnd()end 속성의 값
    stepgetStep()step 속성의 값


반응형

'FULL STACK > JSP&SERVLET' 카테고리의 다른 글

JSTL Format Tag  (0) 2019.01.22
JSTL 정의  (0) 2019.01.21
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
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
글 보관함