JSTL의 <c:remove> 태그는 지정된 스코프(scope)에서 변수를 삭제하거나, 스코프가 지정되지 않은 경우 해당 변수가 발견되는 첫 번째 스코프에서 변수를 제거합니다. 이 태그 자체는 특별히 복잡한 기능을 수행하지는 않지만, JSP 페이지가 자신이 생성한 스코프 리소스를 확실하게 정리(cleanup)하도록 보장하는 데 유용하게 활용됩니다.
c:remove 태그의 속성
<c:remove> 태그는 다음과 같은 속성을 가집니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| var | 제거할 변수의 이름 | 필수 | 없음 |
| scope | 제거할 변수가 존재하는 스코프 | 선택 | 모든 스코프 |
주요 속성 설명
var 속성은 필수 항목으로, 삭제하고자 하는 변수의 이름을 지정합니다. scope 속성은 선택 사항이며, page, request, session, application 중 하나의 값을 가질 수 있습니다. scope를 생략하면 JSP는 page → request → session → application 순서로 변수를 검색하여 가장 먼저 발견된 위치에서 해당 변수를 제거합니다.
사용 예제
다음은 session 스코프에 salary라는 변수를 설정한 후, <c:remove> 태그로 이를 제거하는 예제입니다.
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title><c:remove> 태그 예제</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*2}"/>
<p>삭제 전 값: <c:out value = "${salary}"/></p>
<c:remove var = "salary"/>
<p>삭제 후 값: <c:out value = "${salary}"/></p>
</body>
</html>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
삭제 전 값: 4000 삭제 후 값:
결과에서 확인할 수 있듯이, <c:set> 태그로 session 스코프에 저장된 salary 변수의 값(4000)이 <c:out> 태그를 통해 정상적으로 출력됩니다. 그러나 <c:remove> 태그가 실행된 이후에는 해당 변수가 더 이상 존재하지 않으므로 아무 값도 출력되지 않습니다.
정리
<c:remove> 태그는 불필요해진 변수를 스코프에서 제거하여 메모리를 효율적으로 관리하고, 세션 데이터 등의 리소스를 깔끔하게 정리할 때 활용할 수 있습니다. 특히 사용자 로그아웃 처리 시 세션에 저장된 정보를 삭제하거나, 요청 처리가 끝난 후 임시 데이터를 정리하는 상황에서 유용하게 사용됩니다.