JSTL 개요
> 일반사항
JCP (Java Community Process, 자바표준화 단체)에서 정한 표준
JSP 2.0에 포함
일반적으로 필요한 기능의 태그 라이브러리를 미리 구현함
> JSTL 구성요소
CORE : 공통 필수 기능
XML : XML 문서 처리 관련 기능
I18N : 국제화 지원 관련 기능
SQL : JDBC를 이용한 DB 처리 기능
JSTL 라이브버리별 tablib URL과 Prefix
라이브러리 (Library) | URI | prefix |
CORE | http://java sun.com/jsp/jstl/core | c |
XML | http://java.sun.com/jsp/jstl/xml | x |
I18N | http://java.sun.com/jsp/jstl/fmt | fmt |
SQL | http://java.sun.com/jsp/jstl/sql | sql |
함수 | http://java.sun.com/jsp/jstl/funtions | fn |
> 페이지 지시어에서 사용법 (core)
<%@ taglib prefix="c" uri="http://java sun.com/jsp/jstl/core" %>
JSTL 라이브러리
> 수식, 흐름제어, URL을 통한 자원 접근 등 가장 일반적으로 필요한 기능으로 구성
> 코어 라이브러리는 표현식, 반복처리, URL 관리 기능 등을 제공하므로 웹 애플리케이션을 개발할 때 유용하게 사용 가
> core 태그는 반드시 알아두어야 함
> core 태그 이외의 다른 라이브러리는 JSTL 이외에도 많이 개발되어 있으며 경우에 따라서는 직접 커스텀 태그로 구현하는 것이 좋을 수도 있음
# 코어
라이브러리 | 기능 | 태그 | 접두어 |
코어 | General Purpose Actions (일반적인 것) | catch out remove set |
c |
Conditional Actions (조건) | if choose when otherwise |
||
Iterator Actions (반복) | forEach forTokens |
||
URL Related Actions (URL 관련) | import redirect url param |
# I18N(국제화)
라이브러리 | 기능 | 태그 | 접두어 |
I18N(국제화) | Locale | setLocale | fmt |
Number and DateFormatting | formatNumber formatDate |
JSTL 수식 언어
> EL (Expression Language) 지원
> 간단한 연산식 사용 가능
> 산술 연산자
연산자 | 기능 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ or div | 나누기 |
% or mod | 몫 |
태그 모음
<c:set> 태그
변수를 설정하거나 객체의 멤버변수 값을 설정할 때 사용하는 태그
<c:set value="값" var="변수명" />
이렇게 선언하고나면 ${변수명} 형식으로 사용할 수 있다.
scope="session"을 추가하면 다른 영역에 저장이 가능하다. scopr의 경우 default 값은 "page"이다.
<c:set value="값" var="변수명" scope="page" 또는 "session" 또는 "request" 또는 "application" />
해당 변수는 page 영역의 속성으로 선언되기 때문에 내부적으로 자바 변수로 선언되는 것이 아니다. 따라서 <%= 변수이름> 형태로는 출력이 불가하다.
<c:out> 태그
변수 내용을 출력할 때 사용하는 태그
EL 태그로도 출력할 수 있지만 태그가 포함된 변수를 escapeXml 항목을 true 또는 false로 지정하여 태그를 포함해서 출력할지 적용해서 출력할지 결정할 수 있다.
<c:out value="값" var="변수명" />
- 태그 바디가 없는 경우
<c:out value="${값}" escaprXml="true" 또는 "false" />
- 태그 바디가 있는 경우
<c:out value="${값}" escaprXml="true" 또는 "false" >
default value (value가 없을 때 출력될 기본 값)
</c:out>
<c:remove> 태그
변수를 제거할 때 사용하는 태그
<c:remove var="변수명" />
해당 이름을 가진 변수가 제거된다. 여기서 주의할 부분은, 이렇게 선언할 경우 모든 scope에서 해당 이름의 변수가 제거되므로 특정 영역의 변수만 제거하고 싶을 땐 아래와같이 scope를 지정해준다.
<c:remove var="변수명" scope="request" />
<c:if test="true" 또는 "false"> 태그
출력 태그와 비슷하지만 조건이 있다. test 안의 내용이 true이냐 false이냐에 따라 내용을 출력하거나 출력하지 않는다. 자바의 if문의 비슷하지만 else문을 지원하지 않는다.
- 바디 내용이 없는 경우
<c:if test="test" var="변수명" scope="page" 또는 "session" 또는 "request" 또는 "application" />
- 바디 내용이 있는 경우
<c:if test="test" var="변수명" scope="page" 또는 "session" 또는 "request" 또는 "application" >
body content
</c:if>
<c:choose>, <c:when>, <c:otherwise> 태그
세 태그는 함께 사용된다. 자바의 if ~ else if문, switch문과 비슷하다.
<c:choose> 태그 내에 <c:when> 태그를 여러 개 사용할 수 있다.
<c:choose>
<c:when test="${1 > 0}">
1은 0보다 크다<br>
</c:when>
<c:when test="${2 > 1}">
2은 1보다 크다<br>
</c:when>
<c:otherwise>
대부분 숫자는 0보다 크다<br>
</c:otherwise>
</c:choose>
<c:forEach> 태그
반복문과 관련된 태그로 자바의 for문과 유사하다.
- 컬렉션 객체의 크기 만큼 반복
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]
[begin="begin"] [end="end"] [step="step"]>
body content
</c:forEach>
2. 지정된 횟수 반복
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
body content
</c:forEach>
<c:forTokens> 태그
문자열에 포함된 토큰을 분리해 각각의 토큰에 대해 반복 처리를 수행하도록 하는 태그이다.
<c:forEach>와 비슷하게 자바의 for문과 유사하지만, String/Tokenizer 클래스 기능을 제공한다.
자바에서의 String/Tokenizer 클래스는 문자열로부터 공백이나 '-' 등 특정 구분자를 기준으로 문자열을 분할하는 기능을 제공하는 클래스이다.
<c:forTokens var="temp" items="aaa bbb ccc" delims=" ">
${temp}<br>
</c:forTokens>
날짜 관련 태그
type에 date, time 둘 중 하나만 쓰면 하나만 출력됨.
<fmt:formatDate value="<%=new Date() %>" type="both" />
숫자 관련 태그
- 세 자리마다 끊어서 쉼표 출력
<fmt:formatNumber value="12345678" groupingUsed="true"/>
- 소수점 둘째 자리까지만 출력
<fmt:formatNumber value="3.141592" pattern="#.##"/>
'JSP' 카테고리의 다른 글
[JSP] 게시판 MVC 패턴 흐름도 (0) | 2023.10.19 |
---|