JSP에서 JSTL로 변수와 예외 처리: c:set, c:remove, c:catch 태그
이번 글에서는 JSTL의 변수 관리 태그인 <c:set>
, <c:remove>
, <c:catch>
에 대해 알아보고, 이를 활용하여 JSP 페이지에서 변수를 관리하고 예외를 처리하는 방법에 대해 알아봅니다. 이 태그들을 사용하면 자바 코드를 직접 작성하지 않고도 JSP에서 효율적으로 변수를 설정하고 관리할 수 있습니다.
1. JSTL 변수 관리 태그 개요
JSTL 변수 관리 태그는 JSP 페이지에서 변수를 설정, 제거, 예외를 처리할 때 유용하게 사용됩니다. 이를 통해 코드의 가독성을 높이고 유지보수를 쉽게 할 수 있으며, JSP 페이지의 복잡한 로직을 간결하게 작성할 수 있습니다. 주요 태그로는 <c:set>
, <c:remove>
, <c:catch>
가 있습니다.
▼ 코어 태그 종류
- c:if: 조건이 참일 경우에만 특정 코드를 실행하는 태그입니다. 자바의
if
문과 유사하게 동작합니다. - c:choose: 여러 조건 중 하나를 선택하여 실행할 수 있는 태그입니다. 자바의
switch
문과 비슷한 역할을 합니다. - c:when:
c:choose
태그 내에서 특정 조건이 참일 때 실행되는 블록을 정의하는 태그입니다. - c:otherwise:
c:choose
태그 내에서 모든c:when
조건이 거짓일 때 실행되는 블록을 정의하는 태그입니다. - c:forEach: 컬렉션이나 배열의 요소들을 반복하여 처리할 수 있는 태그입니다.
- c:forTokens: 문자열을 토큰으로 분리하여 반복 처리를 할 수 있는 태그입니다.
- c:set: 변수를 설정하거나 값을 저장할 때 사용하는 태그입니다.
- c:remove: 설정된 변수를 제거할 때 사용하는 태그입니다.
- c:catch: 예외 처리를 위한 태그로, JSP에서 발생하는 예외를 처리할 수 있습니다.
- c:import: 외부 콘텐츠를 가져오거나 다른 페이지의 내용을 포함할 때 사용하는 태그입니다.
- c:redirect: 특정 URL로 리다이렉트할 때 사용하는 태그입니다.
2. <c:set> 태그
<c:set>
태그는 변수를 설정하거나 값을 저장할 때 사용됩니다. 변수를 다양한 스코프(예: page
, request
, session
, application
)에 저장할 수 있으며, 자바스크립트의 var
와 비슷한 역할을 합니다.
2.1 <c:set> 태그의 주요 속성
- var: 설정할 변수의 이름을 지정합니다.
- value: 변수에 할당할 값을 지정합니다.
- scope: 변수를 저장할 스코프를 지정합니다. (
page
,request
,session
,application
)
2.2 <c:set> 태그 예제
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL c:set 태그 예제</title>
</head>
<body>
<h1>JSTL c:set 태그 예제</h1>
<c:set var="username" value="BlueShare" />
<p>사용자 이름: <c:out value="${username}" /></p>
</body>
</html>
이 예제에서는 username
이라는 변수를 설정하고, 해당 값을 출력합니다. <c:out>
태그를 사용하여 변수에 저장된 값을 JSP 페이지에서 출력할 수 있습니다.
▼ 실행 결과

3. <c:remove> 태그
<c:remove>
태그는 설정된 변수를 제거할 때 사용됩니다. 특정 스코프에서 변수를 제거할 수 있으며, 변수가 제거되면 더 이상 해당 변수에 접근할 수 없습니다.
3.1 <c:remove> 태그의 주요 속성
- var: 제거할 변수의 이름을 지정합니다.
- scope: 변수를 제거할 스코프를 지정합니다. (지정하지 않으면 모든 스코프에서 변수가 제거됩니다)
3.2 <c:remove> 태그 예제
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL c:remove 태그 예제</title>
</head>
<body>
<h1>JSTL c:remove 태그 예제</h1>
<c:set var="username" value="BlueShare" />
<c:remove var="username" />
<p>사용자 이름: <c:out value="${username}" /></p>
</body>
</html>
이 예제에서는 username
변수를 설정한 후, <c:remove>
태그를 사용해 변수를 제거합니다. 이후 변수에 접근하려 하면 출력되지 않습니다.
▼ 실행 결과

4. <c:catch> 태그
<c:catch>
태그는 예외 처리를 위해 사용됩니다. JSP 페이지에서 발생할 수 있는 예외를 처리하여 애플리케이션의 안정성을 높일 수 있습니다.
4.1 <c:catch> 태그의 주요 속성
- var: 발생한 예외를 저장할 변수의 이름을 지정합니다.
4.2 <c:catch> 태그 예제
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSTL c:catch 태그 예제</title>
</head>
<body>
<h1>JSTL c:catch 태그 예제</h1>
<c:catch var="exception">
<%
// 0으로 나누기 예외 발생
int result = 1 / 0;
request.setAttribute("result", result);
%>
</c:catch>
<c:if test="${not empty exception}">
<p>예외가 발생했습니다: <c:out value="${exception.message}" /></p>
</c:if>
</body>
</html>
이 예제에서는 스크립틀릿에서 0으로 나누기를 수행하여 ArithmeticException
이 발생하게 하고, 그 예외를 <c:catch>
태그로 처리하도록 했습니다. 이렇게 하면 예외가 발생했을 때 <c:catch>
가 해당 예외를 잡아내고, 이를 출력할 수 있습니다.
▼ 실행 결과

결론
JSTL 변수 관리 태그를 사용하면 JSP 페이지에서 자바 코드를 삽입하지 않고도 변수를 설정하고, 제거하며, 예외를 처리할 수 있습니다. <c:set>
, <c:remove>
, <c:catch>
태그를 통해 JSP 페이지의 가독성과 유지보수성을 높일 수 있으며, 이를 통해 보다 안정적인 웹 애플리케이션을 구현할 수 있습니다. 다음 글에서는 더 많은 JSTL 태그와 그 활용법에 대해 알아보겠습니다.
관련 이전 게시글
- JSP에서 JSTL 표준 태그 라이브러리 설정 및 사용 방법
- JSP에서 JSTL 코어 태그로 조건문 처리: c:if, c:choose 태그
- JSP에서 JSTL 반복문 처리하기: c:forEach, c:forTokens 태그
- JSP EL(Expression Language) 활용하기: 기본 문법과 예제
- JSP 내장 객체 사용법: request와 response
이 글이 도움이 되셨다면 공유 부탁 드립니다.