JSTL
JSP Standard Tag Library
- JSP 표준 태그 라이브러리이며,
- 기본 태그가 아닌 JSP 확장 태그이다.
- JSTL은 모든 태그가 EL문법으로 제공된다.
JSTL 라이브러리
JSTL 라이브러리 종류
JSTL 태그 사용을 위한 디렉티브
JSTL Core 라이브러리
- 변수 선언, 조건문, 반복문 등의 기능을 지원하는 태그
- 자바의 주요 기능을 태그로 대신할 수 있기 때문에 매우 유용한 라이브러리임
- Core 라이브러리를 사용하면 Jsp 페이지 내에서 자바 코드를 대부분 없앨 수 있음
Core 라이브러리 태그 기능
- 변수
<c:set>
: 변수 선언
<c:remove>
: 변수 제거
- 제어문
<c:if>
: 조건문
<c:choose>
: switch문
(하위 태그로 <c:when>
, <c:otherwise>
있음)
<c:forEach>
: 반복문
<c:forTokens>
: 구분자를 이용해 토큰 분리
- URL
<c:import>
: 다른 자원을 Jsp 페이지로 가져옴
<c:redirect>
: 리다이렉트
(하위 태그로 <c:param>
사용 가능)
<c:url>
: 지정한 URL로 이동
(하위 태그로 <c:param>
사용 가능)
- 기타
<c:catch>
: 예외 처리
<c:out>
: JspWriter에 내용 처리 후 출력
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set> 태그
- 속성(Attribute)을 저장할 때 사용한다.
- binding 영역을 지정할 수 있다.
(디폴트는 pageContext
에 저장임)
영역 | 작성방법 |
---|
pageScope | page |
requestScope | request |
sessionScope | session |
applicationScope | application |
형식
<c:set var="속성명" value="값" scope="binding영역" />
👉<c:set> 태그 활용 예제(깃허브 클릭)
<c:if>
형식
<c:if test="조건식">
실행문
</c:if>
👉<c:if> 태그 활용 예제(깃허브 클릭)
<c:choose>
<c:if>
태그를 대체할 수 있다.
else if
, else 문
처리가 가능하다.
형식
<c:choose>
<c:when test="조건식">
실행문
</c:when>
<c:when test="조건식">
실행문
</c:when>
<c:otherwise>
실행문
</c:otherwise>
</c:choose>
👉<c:choose> 태그 활용 예제(깃허브 클릭)
<c:forEach>
형식
<c:forEach var="속성" begin="시작값" end="종료값" step="증가값">
${속성}
</c:forEach>
<c:forEach var="요소" items="배열 or 리스트" varStatus="인덱스명">
${요소}
</c:forEach>
👉<c:forEach> 태그 활용 예제(깃허브 클릭)
fmt library
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
주요 fmt 태그
예)
<c:set var="n" value="12345.6789"/>
<div><fmt:formatNumber value="${n}" pattern="#,##0"/></div>
<div><fmt:formatNumber value="${n}" pattern="#,##0.00"/></div>
<div><fmt:formatNumber value="0.5" type="percent"/></div>
<div><fmt:formatNumber value="${n}" type="currency" currencySymbol="$"/></div>
<div><fmt:formatNumber value="${n}" type="currency" currencySymbol="₩"/></div>
<fmt:formatDate>
: 날짜 객체(Date)를 특정 형식으로 변환하여 출력
- 👉활용예제(깃허브 클릭)
예)
<c:set var="now" value="<%=new Date()%>"/>
<div><fmt:formatDate value="${now}" pattern="yyyy-MM-dd E요일"/></div>
<div><fmt:formatDate value="${now}" pattern="a h:mm:ss"/></div>
<div><fmt:formatDate value="${now}" pattern="H:mm:ss"/></div>
Function
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
fn
태그는 값을 처리하는 함수를 사용함으로 단독으로는 사용할 수 없고 EL
문법 안에서 사용한다.
${fn:length(str)}
${fn:substring(str, n, m)}
${fn:substringBefore(str, ' ')}
${fn:substringAfter(str, ' ')}
${fn:indexOf(str, ' ')}
${fn:replace(str, ' ', '_')}
${fn:startsWith(str, 'H')}
${fn:endsWith(str, 'H')}
${fn:contains(str, 'H')}
${fn:containsIgnoreCase(str, 'h')}
split과 join을 사용하면 replace를 대체할 수 있다.
${fn:split(str, ' ')}
split
: 문자열 나누기, str을 공백으로 나눔(쪼갬)
- 배열이 생김
"Hello", "World"
${fn:join(words, ' ')}
join
: 문자 연결, "Hello"
와 "World"
를 다시 공백으로 연결
XSS (크로스사이트 스크립트 방지)
Cross Site Scripting
- 입출력 창에 스크립트 태그가 들어가지 못하도록 EL로 작업하는 방법
${fn:escapeXml(str2)}
👉fn 태그 활용 예제(깃허브 클릭)
페이지 로드 순서
동작 및 실행 순서 | > | | > | | > | |
---|
JAVA | > | JSTL | > | HTML | > | JavaScript(jQuery) |