본문 바로가기
Web/JSP

JSP #13 JSTL-2 core 라이브러리

by 언덕너머에 2015. 1. 5.

core 라이브러리는 변수선언 등의 EL 지원과 흐름을 제어하고, URL을 관리하는 기능을 제공한다.

지시어

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

 

 기능

태그

설명 

 EL 지원

 <c:set>

 변수에 값을 설정

 <c:remove>

 변수에 설정된 값을 제거

 <c:out>

 표현식 대체, JspWriter에 데이터 출력

 <c:catch>

 예외처리에 사용

 흐름제어

 <c:if>

 조건 처리

 <c:choose>

 여러 조건에 따른 처리

 <c:forEach>

 반복처리

 <c:forTokens>

 구분자로 분리된 각 토큰을 처리

 URL 관리

 <c:import>

 외부자원 포함

 <c:reditect>

 지정한 경로로 이동

 <c:url>

 url 재작성

 

* JSTL 라이브러리의 태그에 표기하는 [scope="속성"]의 "속성"은 "page, request, session, application" 영역의 하나이며, 기본값은 page이다.

 

- <c:set> 태그

  표기)

        <c:set var="변수명" value="값" [scope="{page|request|session|application}"] />

        <c:set var="변수명" [scope="{page|request|session|application}"]>값</c:set>

        <c:set value="값" target="target" property="프로퍼티명" />    

        <c:set value="값" target="target" property="프로퍼티명">값</c:set>

  사용예)

        <c:set var="id" value="<@= id %>" scope="session">

 

- <c:out> 태그

  웹브라우저에 값을 출력한다. value 값으로 문자열이나 EL을 사용하며, scope 기본값은 page이다.

  JSP 표현식(<%= %>)과 같은 역활을 한다.

  표기)

        <c:out value="값" excapeXml={true|false} [default="기본값"] />

        <c:out value="값" excapeXml={true|false} >기본값</c:out>

  사용예)

        <c:out value="${id}" default="${guest}" />

 

  * excapeXml이 true이면 다음과 같이 값이 변경된다.

    < -> &it;   > -> &gt;   & -> &amp;   ' -> &#039   " -> &#034

 

- <c:remove> 태그

  변수의 값을 제거하며, scope의 기본값은 page이다. JSP의 removeAttribute()와 같은 역할을 한다.

  표기)

        <c:remove var="변수명" [scope="속성"] />

  사용예)

        <c:remove var="id" scope="page" />

      

- <c:catch> 태그

  예외처리에 사용하며, JAVA의 try ~ catch와 같은 역할을 한다.

  표기)

         <c:catch [var="변수명"]>actions</c:catch>

  사용예)

         <c:catch var="errmsg"> <%= 1/0 %> </c:catch>

         <c:out value="${errmsg}" />

 

- <c:if> 태그

  if문과 동일하며 test 속성에 조건을 기술한다.

  표기)

    <c:if test="조건" var="변수명" [scope="속성"] /> : 조건에 따라 true 혹은 false가 변수명에 저장 

    <c:if test="조건" [var="변수명"] [scope="속성"] >값</c:if> : true일 경우 값에 기술된 내용 실행

  사용예)

     <c:if test="${6+3 == 9}">6 + 3 = 9 </c:if>

 

- <c:choose> 태그

  사용예)

     <c:choose>

        <c:when test="${id == 'amdin'}">관리자입니다.</c:when>

        <c:when test="${id == 'guest'}">손님입니다.</c:when>

        <c:when test="${empty id}">로그인하세요.</c:when>

        <c:otherwise>일반회원입니다.</c:otherwise>

     </c:choose>

 

- <c:forEach> 태그

  표기)

     <c:forEach [var="변수명"] items="객체명" [varStatus="상태변수명"] [begin="시작값"]

                      [end="최종값"] [step="단계값"]>

       body content

     </c:forEach>

     <c:forEach [var="변수명"] [varStatus="상태변수명"] begin="시작값" end="최종값"

                      [step="단계값"]>

       body content

     </c:forEach>

  사용예)

     <c:forEach var="ck" items="${paramValues.s2}">

       - ${ck}<br>

     </c:forEach>

 

*varStatus 속성

  index : items에 지정한 집합체의 현재 반복 중인 항목의 index를 알려준다. 0부터 순서가 부여된다.

              절대적 위치를 표시한다.

  count : 루핑을 돌 때 현재 몇번째를 반복중인지 알려준다. 1부터 순서가 부여된다.

  first : 현재 루프가 처음인지 여부를 알려준다. 첫번째 일경우에는 true를 아니면 false를 반환한다.

  last : 현재 루프가 마지막인지 여부를 알려준다. 첫번째 일경우에는 true를 아니면 false를 반환한다.

 

- <c:forTokens> 태그

  "java.util.StringTokenizer"를 이요하여 구분자에 맞추어 반복 처리한다.

  표기)

     <c:forTokens items="stringOfTokens" delims="delimiters" [var="변수명"]

                        [varStatus="상태변수명"] [begin="시작값"] [end="종료값"] [step="step"]>

        body contents

     </c:forTokens>

  사용예)

     <c:forTokens var="one" items="서울, 인천, 대전, 대구, 부산, 광주" delims=", " varStatus="sts">

        <c:out value="${sts.count}. ${one}" /><br>

     </c:forTokens>

     => 1. 서울

          2. 인천

          3. 대전

          4. 대구

          5. 부산

          6. 광주

 

- <c:import> 태그 : JSP의 <jsp:include> 태그처럼 사용할 수 있다.

  표기)

     <c:import url="url" [context="context"] [var="변수"] [scope="속성"] [charEncoding="인코딩"]>

        Body Contents <c:param> 서브태그

     </c:import>

  사용예)

     <c:import url="http://localhost:8080/helloworld.jsp" var="data" />

     ${data}

 

- <c:redirect> 태그

  지정한 페이지로 이동할 때 사용한다. response.sendRedirect()를 대체하는 태그이다.

  표기)

     <c:redirect url="url" [context="컨텍스트"] />

     <c:redirect url="url" [context="컨텍스트">

        <c:param name="명" value="값" />

     </c:redirect>

 

- <c:url> 태그

  표기)

    <c:url value="http://i.ebayimg.com/images/i/381129698667-0-1/s-l140.jpg" var="data"></c:url>
    <img src="${data}">

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

JSP #15 Servlet에서 입력값 한글 지원  (0) 2015.02.05
JSP #14 Spring - 1 Spring Framework  (0) 2015.01.09
JSP #12 JSTL-1  (0) 2015.01.05
JSP #11 EL-3 EL의 내장객체  (0) 2015.01.02
JSP #10 EL-2 EL의 연산자  (0) 2015.01.02