JSP에서 JSTL로 변수와 예외 처리: c:set, c:remove, c:catch 태그

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 페이지에서 출력할 수 있습니다.

<c:set> 태그 예제 실행 결과 화면

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> 태그를 사용해 변수를 제거합니다. 이후 변수에 접근하려 하면 출력되지 않습니다.

<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>가 해당 예외를 잡아내고, 이를 출력할 수 있습니다.

<c:catch> 태그 예제 코드 실행 결과 화면

결론

JSTL 변수 관리 태그를 사용하면 JSP 페이지에서 자바 코드를 삽입하지 않고도 변수를 설정하고, 제거하며, 예외를 처리할 수 있습니다. <c:set>, <c:remove>, <c:catch> 태그를 통해 JSP 페이지의 가독성과 유지보수성을 높일 수 있으며, 이를 통해 보다 안정적인 웹 애플리케이션을 구현할 수 있습니다. 다음 글에서는 더 많은 JSTL 태그와 그 활용법에 대해 알아보겠습니다.

관련 이전 게시글

위로 스크롤