태그 라이브러리

MIN·2023년 12월 15일
0

Servlet/JSP

목록 보기
18/21
post-thumbnail

2023.12.15

🍬 태그 라이브러리란(taglib)?

기본 스펙에 포함되지 않는 별도의 태그를 사용하기 위해 선언한다.

<%@ taglib prefix="" uri="" %>


🍬 SJTL : 표준 태그 라이브러리

JSP Standard Tag Library 의 약자로 표준 태그 라이브러리는 JSP에서 자주 사용한다.

attribute는 페이지 간 객체를 공유할 수 있는 장점이 있다. 하지만 스크립틀릿 및 표현식으로 attribute를 활용하기에는 적합하지 않다.
action태그는 기본 JSP문법을 확장하여 여러 태그를 제공하지만, 부족한 점이 있기 때문에 여러 개발자들이 자신만의 태그를 생성하여 사용하기 시작했다. (Tag Library)

이렇게 생성된 태그들은 같거나 비슷한 기능이 서로 다르게 사용되었기 때문에 표준이 필요하게 되었다.

자주 사용되는 태그들 중에서 표준을 지정하여 묶음파일로 제공하는 형태가 바로 JSTL이다!

EL Tag는 JSP의 기본 스펙이지만, 다른 라이브러리 파일을 사용하기 위해서는 /WEB-INF/lib 폴더에 넣어주어야 한다. 그리고 폴더에 넣은 후 상단에 taglib지시자를 이용하여 선언해야만 사용이 가능하다.

💡 JSTL Core

변수(attribute) 선언, if, forEach 등 스크립틀릿 코드를 대신하는 태그

💡 JSTL function

length, substring 등 추가적인 함수를 사용하기 위한 태그

💡 JSTL Format

숫자, 날짜 및 시간 등의 서식을 지정하기 위한 태그

💡 JSTL sql

JSP에서 SQL문을 이용하여 DB와 상호작용을 하기 위한 태그

💡 JSTL XML

xml문서를 제어하기 위한 태그


🍬 JSTL Core

🍭 c:set

var 이름으로 value 객체를 생성하여, scope에 attribute로 등록한다. (기본값은 page)

<c:set var="t1" value="짱구" scope="page" />
<c:set var="t2" value="철수" scope="request" />
<c:set var="t3" value="<%=new Integer(22) %>" scope="session" />
<!-- 표현식 사용가능 -->
<c:set var="t4" value="${'유리' }" scope="application" />
<!-- EL태그 사용가능 -->

<p>t1 : ${pageScope.t1 }, ${t1 }</p>
<p>t1 : ${requestScope.t2 }, ${t2 }</p>
<p>t1 : ${sessionScope.t3 }, ${t3 }</p>
<p>t1 : ${applicationScope.t4 }, ${t4 }</p>

🍭 c:if

test의 조건이 true면 태그 내부 코드를 수행한다.

<p>
	${t2 }의 나이는 ${t3 } 살이고
	<c:if test="${t3 >= 20 }">성인</c:if>
	<c:if test="${t3 <20 }">미성년자</c:if>
	입니다
</p>

🍭 c:choose

여러 조건 중 하나를 수행한다.
하위 태그로 c:when, c:otherwise가 있다.

<c:choose>
	<c:when test="${t3 > 0 }">양수</c:when>
	<c:when test="${t3 < 0 }">음수</c:when>
	<c:otherwise>ZERO</c:otherwise>
	<%-- c:when은 if와 else if랑 같은 역할 --%>
	<%-- otherwise는 else랑 같은 역할 --%>
</c:choose>

🍭 c:forEach

itmes객체의 각 요소를 var에 저장하여, items의 길이만큼 반복문을 수행한다

<%
	String[] arr = {"짱구", "철수", "유리", "맹구", "훈이"}
    pageContext.setAttribute("arr", arr);
%>
  
<ul>
	<c:forEach var="name" items="${arr }">
		<li>${name }</li>
	</c:forEach>
</ul>
  

🍭 c:forTokens

문자열을 구분자로 분리하여 (split) 각 값에 대한 반복문을 수행한다

<c:set var="text" value="Drop a red light and we'll sing it goodbye" />
<c:forTokens var="word" items="${text }" delims=" ">
<%--공백(delims)을 기준으로 text를 분리하여 반복문 수행--%>
	<p>${word }</p>
</c:forTokens>


🍭 c:redirect

지정한 페이지로 리다이렉트한다

<c:redirect url="https://www.naver.com" />

이 코드를 쓰면 페이지를 열자마자 바로 이동된다!





🔥 한줄평
코드를 좀 더 짧게 쓸 수 있는 태그 라이브러리를 사용하였더니 매우 편리해졌다! 그런데 계속 사용하다보니 기존의 스크립틀릿을 잊어버릴 것 같다....

profile
기초부터 시작하는 감쟈 ※ 소개글 확인해주세요!! ※

0개의 댓글