* JSTL (JSP Standard Tag Library)

1. custom tag library로 JSP 스펙에는 포함되지 않았지만 자바 진영에서 진행하는 태그 라이브러리.
 - 커스텀 태그(custom tag) : JSP에서 스크립트릿으로 작성해야할 동적 로직을 태그로 처리
 - jstl.java.net에서 api를 다운로드 후 web application의 lib 폴더에 넣어 사용한다.

2. JSP에서 커스텀 태그를 사용하기 위해서는 taglib 지시자 태그 설정 필요
 <%@ taglib prefix="접두어" uri="태그 라이브러리 구분자"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl.core"%>
 사용 : <c:>

3. JSTL 종류
 - core : program의 기본적인 내용들을 지원. 변수, 제어문, 출력 등
   uri : http://java.sun.com/jsp/jstl/core
 - xml : XML 관련 처리
   uri : http://java.sun.com/jsp/jstl/xml
 - 국제화 : ResourceBundle을 이용한 국제화 처리
   uri : http://java.sun.com/jsp/jstl/fmt
 - 데이터베이스 : JSP에서 DB 접근하기 위한 로직 지원
   uri : http://java.sun.com/jsp/jstl/sql

* 주요 Core 라이브러리

1. 변수 지원
 - set : JSP에서 Attribute로 binding된 객체 처리
 - remove : binding된 attribute 제거

2. 제어문 지원
 - if : if문
 - choose : 다중 조건 처리
 - forEach : 반복문 처리

3. 출력지원
 ① out 태그

   - 태그형태의 문자열을 그대로 출력되도록 처리할 수 있다.
 - 속성
   - value : 출력할 내용
   - escapeXml : 태그 출력 여부 처리
                        true : 태그를 해석하지 않고 그대로 출력
                        false : 태그를 해석해서 출력
- default : value의 값이 null일 경우 출력할 기본 값

*
WebContent
이름 : jstl/out.jsp

- 결과



② if 태그

 - 단일 조건 조건문 처리. -if문과 동일
 - 다중 조건 처리에는 사용할 수 없다. (if-else)
 - 속성
    - test : 조건 설정
 - 구문
    <c:if test="조건">
    조건 만족시 실행할 내용
    </c:if>

*
WebContent
이름 : jstl/if.jsp

* 로그인한 사람이 19세 이하일 경우 결과보기

* 로그인한 사람이 19세 이상일 경우 결과보기

③ choose 태그

 - 다중 조건을 처리하는 태그 - if else, switch case
 - choose 태그는 조건들을 묶어주는 역할
 - 하위태그
 - when 태그
 - 선택할 조건을 표시하기 위한 태그
 - 속성 : test - 조건 설정
 - otherwise
 - else의 역할(switch case의 default 역할)
 - 구문
    <c:choose>
    <c:when test="조건1">
    조건1이 true일 경우 실핼할 내용
    </c:when>
    <c:otherwise>
    when의 모든 조건이 만족 하지 않을 경우 실행할 내용
    </c:otherwise>
    </c:choose>

* 결과

 

 

④ forEach 태그

 - 컬랙션이나 배열을 반복해서 element들을 조회
   - 속성
      - items : 반복할 컬랙션이나 배열 설정
      - var : 반복시 조회할 element를 참조할 변수 선언
   - 구문
<c:forEach var="var" items="배열">
${var}
</c:forEach>

 - 특정 횟수만큼 반복을 처리
   - 속성
      - begin : 시작 값
      - end : 종료 값
      - step : 증감 값
      - var : 변화되는 값을 저장할 변수 선언
<c:forEach begin="1" end="10" step="1" var="i">
${i} - 안녕
</forEach>

 

- 결과

⑤ set 태그

 1. 4개 속성영역에 값(Attribute)를 binding
  - 속성
      var : binding할 이름
      scope : binding할 속성영역. 값 : page, request, session, application
      value : binding할 속성 객체
      - 예) <c:set var="name" scope="request" value="홍길동"/>

 2. binding된 Attribute의 property에 값을 설정
   - 속성
      target : property를 설정할 attribute
      value : property에 설정할 값
      property : 값을 설정할 property
   - 예 <c:set target="${requestScope.cto}" property="id" value="aaa"/>
 
⑥ remove 태그

 - 4개 속성영역에 binding된 attribute객체를 제거하는 태그
 - 속성
   var : 제거할 속성의 이름
   scope : 제거할 속성이 binding된 영역(page, request, session, application)
 - 예) <c:remove scope="request" var="cto"/>

 

 

 

 

Posted by 조은성
,