본문 바로가기

JSP

[JSP] JSTL (JSP Standard Tag Library)

 

JSTL (JSP Standard Tag Library)

 

JSTL은 JSP 표준 태그 라이브러리이다. 

  • 간단한 프로그램 로직 구사 (변수선언, if문, for문 등..)
  • 다른 JSP 페이지 호출  ( <c:redirect>, <c:import> )
  • 날짜, 시간, 숫자의 포맷
  • JSP 페이지 하나를 가지고 여러 가지 언어의 웹 페이지 생성
  • 데이터베이스로의 입력, 수정, 삭제, 조회
  • XML 문서의 처리
  • 문자열을 처리하는 함수 호출

문자열을 처리하는 함수 호출을 제외한 나머지 기능들은 모두 커스텀 액션 형태로 제공된다.

 

라이브러리 기능 URI 식별자 접두어
코어 일반 프로그래밍 언어에서 제공하는 것과 유사한 변수선언, 실행 흐름의 제어 기능을 제공하고 다른 JSP 페이지로 제어를 이동하는 기능 제공 http://java.sun.com/jsp/jstl/core c
포맷팅 숫자, 날짜 시간을 포맷팅하는 기능과 국제화, 다국어 지원 기능을 제공 http://java.sun.com/jsp/jstl/fmt fmt
데이터베이스 데이터베이스의 데이터를 입력/수정/삭제/조회 하는 기능을 제공 http://java.sun.com/jsp/jstl/sql sql
XML 처리 XML 문서를 처리할 때 필요한 기능 제공 http://java.sun.com/jsp/jstl/xml x
함수 문자열을 처리하는 함수를 제공 http://java.sun.com/jsp/jstl/functions fn

 

JSP 페이지에서 접두어를 사용하기 위해서는 taglib 지시자를 이용해서 라이브러리의 URI 식별자와 접두어를 연결할 수 있다. Taglib 지시자는 다른 지시자와 마찬가지로 <%@ %>로 정의한다.

지시자에는 uri와 prefix 라는 두 개의 애트리뷰트를 작성해야 하고 두 애트리뷰트에 각각 URI 식별자와 접두어를 값으로 주어야 한다.

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


 

코어 라이브러리 사용

 

<c:set> 커스텀 액션 사용

<c:set> 은 변수를 선언하고 나서 변수에 초기값을 대입하는 기능의 커스텀 액션이다. 변수의 타입을 쓰지 않는다.

<c:set var="num" value="100"/>     ->    int num = 100;

<c:set var="sum" value="${num1+num2}"/>   ->  value는 EL식을 쓸 수 있다.

<c:set> 액션을 이요하면 page 데이터 영역뿐 아니라 request, session, application 데이터 영역에 애트리뷰트를 저장하는 것도 가능하다.

<c:set var="price" value="15000" scope="request"/>

scope 애트리뷰트에 request 값을 지정하고 나서 forward 메서드를 통해 다른 JSP페이지를 호출하면 그 JSP 페이지 안에서도 선언된 변수를 사용할 수 있다.


<c:if> 커스텀 액션 사용

<c:if>는 자바 if문과 비슷한 역할을 하는 커스텀 액션이다. test라는 이름의 애트리뷰트 값으로 지정해야 한다.

<c:if test="${num1 > num2}">

             num1이 더 큽니다.

</c:if>


<c:choose> 커스텀 액션 사용

<c:choose>는 자바 switch문과 비슷한 역할을 하는 커스텀 액션이다.

<c:when>, <c:otherwise> 커스텀 액션과 함께 사용되는데, 두 액션은 각각 switch문의 case, default절의 역할을 수행한다.

<c:choose>

     <c:when test="${num == 0}">

               A<br>

     </c:when>

     <c:when test="${num == 1}">

               B<br>

     </c:when>

     <c:otherwise>

              C<br>

     </c:otherwise>

</c:choose>


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

<c:forEach>는 자바 for문과 비슷한 역할을 하는 커스텀 액션이다. 이 액션을 이용하면 특정 HTML코드를 횟수만큼 반복해서 출력할 수 있다.

begin과 end라는 이름의 애트리뷰트를 쓰고 거기에 각각 카운터 변수의 시작 값과 끝 값을 지정하면 된다.

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

                ${cnt}<br>

</c:forEach>

 

<c:forEach> 커스텀 액션을 이용하면 여러 개의 항목으로 구성된 데이터를 순서대로 출력할 수 있다.

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

         ${str}<br>

</c:forEach>


<c:redirect> 커스텀 액션 사용

<c:redirect> 커스텀 액션을 이용해서 웹 자원을 호출할 때는 url이라는 애트리뷰트를 쓰고, 그 값으로 호출할 URL을 지정하면 된다.

<c:redirect url="result.jsp"/>


<c:import> 커스텀 액션 사용

<c:import> 커스텀 액션은 <jsp:include> 표준 액션과 비슷한 역할을 한다. url 애트리뷰트에 호출할 URL을 지정하면 된다. 호출하는 웹 자원에 데이터를 넘겨주어야 할 경우에는 시작 태그와 끝 태그 사이에 <c:param> 커스텀 액션을 사용하면 된다.

<c:import url="result.jsp">

     <c:param name="product" value="TV"/>

</c:import>


<c:out> 커스텀 액션 사용

<c:out> 커스텀 액션은 데이터를 출력할 때 사용한다. value 어트리뷰트에 출력할 데이터를 지정한다.

<c:out value="${str}" default="No data"/>


<fmt:formatDate> 커스텀 액션 사용

<fmt:formatDate>는 날짜와 시각을 포맷하는 커스텀 액션이다. 출력할 날짜와 시각을 java.util.Date 클래스 타입의 객체로 넘겨줘야 하기 때문에 클래스의 객체를 만들어야 한다.

Date date = new Date();

<fmt:formatDate value="${date}"/>

<fmt:formatDate value="${date}" type="time"/>   ->  type="time" 시각 출력,  type="both" 날짜와 시각 출력

<fmt:formatDate value="${date}" type="time" pattern="(a) hh:mm:ss"/>    ->  패턴 지정


<fmt:formatNumber> 커스텀 액션 사용

출력할 수치 값은 <fmt:formatNumber>의 value 어트리뷰트에 지정하면 된다.

<fmt:formatNumber value="100000"/>

<fmt:formatNumber value="100000" groupingUsed="true"/>   -> 3자리마다 쉼표 추가

<fmt:formatNumber value="3.142492" pattern="#.##"/>     ->  3.142492

<fmt:formatNumber value="0.5" type="percent"/>   ->  수치를 퍼센트 단위로 표시

<fmt:formatNumber value="100000" type="currency" currencySymbol="\"/>   -> 금액에 적합한 포맷으로 출력

 

'JSP' 카테고리의 다른 글

[JSP] 모델1과 모델2 설계방식  (0) 2020.10.07
[JSP] 익스프레션 언어(expression language)  (0) 2020.10.02
[JSP] 세션 (Session)  (0) 2020.10.01
[JSP] 쿠키(Cookie)  (0) 2020.09.30
[JSP] JSP(JavaServer Pages) 정리  (0) 2020.09.29