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 |