[JSP] JSTL(Custom Tag)

toget ㅣ 2023. 10. 10. 19:57

JSTL

JavaServer Pages Standard Tag Library의 약자이며, JSP의 대표적인 커스텀 태그(Custom Tag) 입니다.

 

Custom Tag

JSP(JavaServer Pages)에서 제공하는 기능으로, 개발자가 직접 태그의 동작을 정의하여 사용할 수 있게 해줍니다. 기본적으로 제공되는 JSP 액션 태그나 EL(Expression Language)만으로는 원하는 기능을 구현하기 힘들 때, 커스텀 태그를 활용해 재사용 가능한 컴포넌트를 만들 수 있습니다.

하지만, 저처럼 JSP를 처음 배우는 입장에서 이미 있는 태그도 다 쓰지 못하는데 커스텀 태그까지 만들어쓰기에는 무리.

 

JSTL 다운로드

톰캣 공식 홈페이지 https://tomcat.apache.org/taglibs/standard/

 

23년 10월 기준 가장 최신파일 링크
4개 파일을 다운로드

4개 JAR 파일을 사용중인 Dynamic Web Project > WEB-INF > lib 폴더에 넣으면 설치 끝!

 

 

JSTL은 여러 카테고리로 나누어져 있습니다:

Core Tags (c): 기본적인 작업들을 지원하는 태그들 (예: c:forEach, c:if, c:set 등).

Formatting Tags (fmt): 날짜, 숫자, 문자열의 포맷팅 및 국제화와 관련된 태그들 (예: fmt:formatDate, fmt:formatNumber 등).

SQL Tags (sql): 데이터베이스와의 직접적인 작업을 지원하는 태그들 (예: sql:query, sql:update 등). 일반적으로 실제 프로덕션 환경에서는 JDBC나 ORM 방식의 데이터 액세스 레이어를 사용하는 것이 좋기 때문에, 이 태그들은 주로 간단한 프로토타입 또는 교육용 목적으로 사용됩니다.

XML Tags (x): XML 처리와 관련된 태그들 (예: x:parse, x:forEach 등).

Functions (fn): 문자열 처리와 관련된 유용한 함수들 (예: fn:contains, fn:toUpperCase 등).

 

위  태그중 Java를 배운 백엔드개발자는 Core Tag와 Fomatting Tag가 프론트엔드 개발자와의 협업에 도움이될 수 있다고 합니다.

 

Core Tag  종류(많이 쓰는 것)

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

taglib 디렉티브를 사용하여 페이지를 추가합니다.

 

<c:out>: 값 출력

<c:out value="${someVariable}" default="Not Available" />
<c:out value="<div>테스트중</div>" escapeXml="false" />

<c:set>: 변수 설정

<c:set var="myVar" value="${anotherVar}" scope="session"/>

<c:remove>: 변수 제거

<c:remove var="myVar" scope="session"/>

<c:if>: 조건문

<c:if test="${someCondition}">
    Condition is true.
</c:if>
예시
<c:if test="${3 > 1 }">
	크다!<br />
</c:if>

 

<c:choose>, <c:when>, <c:otherwise>: 선택 구문

<c:choose>
    <c:when test="${someVar == 'value1'}">
        First condition.
    </c:when>
    <c:when test="${someVar == 'value2'}">
        Second condition.
    </c:when>
    <c:otherwise>
        Default condition.
    </c:otherwise>
</c:choose>

예시
<c:choose>
		<c:when test="${3 < 1 }">크다!<br /></c:when>
		<c:when test="${3 > 54 }">크다?<br /></c:when>
		<c:otherwise>전부 거짓이야, default<br /></c:otherwise>
</c:choose>

<c:forEach>: 반복문

<c:forEach items="${listOfItems}" var="item">
    <c:out value="${item}" />
</c:forEach>

<c:forTokens>: 토큰 기반의 반복문

<c:forTokens items="Zebra, Lion, Tiger" delims=", " var="animal">
	<c:out value="${animal}" />
</c:forTokens>

<c:url>: URL 생성

<c:url value="/somePath.jsp" var="myUrl">
    <c:param name="param1" value="value1" />
</c:url>

<c:param>: URL 파라미터 추가 (보통 <c:url> 태그와 함께 사용)

<c:url value="/somePath.jsp" var="myUrl">
    <c:param name="param1" value="value1" />
</c:url>

 

<c:redirect>: 페이지 리다이렉트

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

<c:catch>: 예외 처리

<c:catch var="exception">
    <c:out value="An error occurred." />
</c:catch>

 

 

Formatting Tag  종류(많이 쓰는 것)

 

<fmt:formatNumber>: 숫자 형식 지정

<fmt:formatNumber value="${someNumber}" type="currency" currencySymbol="$"/>

<fmt:formatDate>: 날짜와 시간 형식 지정

<fmt:formatDate value="${someDate}" type="date" pattern="yyyy-MM-dd"/>

<fmt:parseNumber>: 문자열을 숫자로 파싱

<fmt:parseNumber value="${stringNumber}" var="parsedNumber" integerOnly="true"/>

<fmt:parseDate>: 문자열을 날짜로 파싱

<fmt:parseDate value="${stringDate}" var="parsedDate" pattern="yyyy-MM-dd"/>

<fmt:setLocale>: 로케일 설정 (다국어 및 지역화를 위해)

<fmt:setLocale value="en_US"/>

<fmt:bundle>: 리소스 번들 설정 (다국어 지원을 위한 프로퍼티 파일 로딩)

<fmt:bundle basename="com.example.messages"/>
<fmt:setBundle basename="com.example.messages"/>

<fmt:message>: 특정 로케일에 대한 메시지 가져오기

<fmt:message key="greeting"/>

<fmt:requestEncoding>: request 인코딩 설정

<fmt:requestEncoding value="UTF-8"/>

'Java > JSP' 카테고리의 다른 글

[JSP] JavaBean/JSP Bean  (0) 2023.10.10
JSP란 무엇인가?  (1) 2023.10.10
[JSP](EL)Expression Language  (0) 2023.10.10