본문 바로가기
최범균의 JSP 2.3 웹프로그래밍/CH12 표준 태그 라이브러리(JSTL)

02 코어 태그

by 개발자공부 2024. 7. 15.

코어 태그 라이브러리는 변수 설정이나 if-else와 같은 논리 처리에 사용되는 스크립트 코드를 대체하는 태그를 제공한다.

기능 분류 태그 설명
변수 지원 set JSP에서 사용할 변수를 설정한다.
remove 설정한 변수를 제거한다.
흐름제어 if 조건에 따라 내부 코드를 수행한다.
choose 다중 조건을 처리할 때 사용된다.
forEach 컬렉션이나 Map의 각 항목을 처리할 때 사용된다.
forTokens 구분자로 분리된 각각의 토큰을 처리할 때 사용된다.
URL 처리 import URL을 사용하여 다른 자원의 결과를 삽입한다.
redirect 지정한 경로로 리다이렉트 한다.
url URL을 재작성한다.
기타 태그 catch 익셉션을 처리할 때 사용한다.
out JspWriter에 내용을 출력한다.

 

🔔 코어 태그 라이브러리를 사용하려면 JSP 페이지에 다음과 같이 taglib 디렉티브를 추가해야 한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>​

2.1 변수 지원 태그

 

변수 지원 태그는 JSTL이 지원하는 태그에서 사용할 수 있는 변수를 설정하기 위해 사용한다. 변수 지원 태그에는 set태그와 remove태그가 있다.

 

2.1.1 <c:set> 태그

<c:set> 태그는 EL 변수의 값이나 EL 변수의 프로퍼티 값을 지정할 때 사용된다. <c:set> 태그의 첫 번째 사용방법은 EL 변수를 생성하는 것으로서 형식은 다음과 같다.

<c:set var="변수명" value="값" [scope="영역"]/>	<-- 자동닫기
<c:set var="변수명" [scope="영역"]>값</c:set>		<-- 태그 명시해서 닫기

 

var : 값을 저장할 EL 변수의 이름을 지정한다.

value : 변수의 값을 지정한다. 표현식, EL, 정적인 텍스트를 사용해서 값을 지정할 수 있다.

scope : 변수를 저장할 영역을 지정한다. 값은 page, request, session, application 중 하나가 온다. 지정하지 않으면 page를 기본값으로 사용한다.

 

<c:set> 태그는 scope 속성에서 지정한 영역에 값을 저장한다. 예를 들어, scope 속성이 page이고 var 속성과 value 속성이 각각 "varName"과 "varValue"라고 할 때 내부적으로 pageContext.setAttribute(varName, varValue, scope)를 호출해서 지정한 영역의 속성으로 설정한다.

 

<c:set> 태그를 이용해서 EL 변수를 설정하는 다양한 예시.

<%-- value 속성 사용 예 --%>
<c:set var="name" value="초코쿠키"/>
<c:set var="name" value="<%= m.getFirstName() %>" scope="request" />
<c:set var="name" value="${m.lastName} ${m.firstName}" />

<%-- 태그의 몸체를 값으로 사용하는 예 --%>
<c:set var="name">마카다미아</c:set>
<c:set var="name"><%m=.getLastName() %> <%=m.getFirstName() %> </c:set>
<c:set var="name">${m.lastName}${m.firstName}</c:set>

 

<c:set> 태그 두 번째 사용방법은 객체의 프로퍼티 값을 설정하는 것이다.

<c:set target="대상" property="프로퍼티이름"value="값" />
<c:set target="대상" property="프로퍼티이름">값</c:set>

2.1.2 <c:remove> 태그

remove 태그는 set 태그로 지정한 변수를 삭제할 때 사용한다.

<c:remove var="varName" [scope="영역"]/>

 

👻 주의할 점!

var 속성과 scope 속성은 set 태그의 두 속성과 동일한 의미를 갖는다. remove 태그를 사용할 때 주의할 점은 삭제할 변수의 scope를 지정하지 않으면 동일한 이름으로 저장된 모든 영역의 변수를 삭제한다는 것이다.

예시
<c:set var="name" value="초코쿠키" scope="request" />
<c:set var="name" value="마카다미아 쿠키" scope="session" />
<c:remove var="name" />
<c:remove> 태그의 속성 설명 요약
속성 표현식/EL 타입 설명
var 사용 불가 String 삭제할 EL 변수 이름
scope 사용 불가 String 삭제할 변수가 포함된 영역