JSP에서 JSTL 코어 태그로 조건문 처리: c:if, c:choose 태그

JSP에서 JSTL 코어 태그로 조건문 처리: c:if, c:choose 태그

이번 글에서는 JSTL 코어 태그의 개요와 역할에 대해 살펴보고, 흐름 제어 태그를 사용하여 JSP 페이지에서 조건문을 처리하는 방법에 대해 알아봅니다. 코어 태그는 JSP에서 가장 많이 사용되는 태그들로, 이를 통해 코드를 더 간결하게 작성할 수 있습니다. 특히 조건문을 처리할 때는 자바 코드를 사용하지 않고도 로직을 제어할 수 있어 코드의 가독성이 높아집니다.

1. JSTL 코어 태그 개요

JSTL 코어 태그는 JSP에서 자주 사용되는 기본적인 태그들을 포함하고 있으며, 변수 설정, 조건문 처리, 반복문 처리 등을 쉽게 구현할 수 있습니다. 이 태그들을 사용하면 자바 코드를 JSP에 직접 삽입하지 않고도 복잡한 로직을 처리할 수 있습니다. 이러한 코어 태그를 사용함으로써 JSP 페이지를 더욱 깔끔하고 유지보수하기 쉽게 만들 수 있습니다.

  • 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:if>, <c:choose>, <c:when>, <c:otherwise>가 있으며, 이를 통해 JSP 페이지에서 다양한 조건문을 처리할 수 있습니다.

2.1 <c:if> 태그

<c:if> 태그는 조건이 참일 때만 특정 코드를 실행합니다. 자바의 if 문과 비슷하게 작동하며, JSP 페이지에서 간단한 조건문을 처리할 때 유용합니다.

<%@ page import="common.Person" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>JSTL c:if 태그 예제</title>
</head>
<body>
    <h1>JSTL c:if 태그 예제</h1>

    <!-- 예제 1 : 사용자 역할에 따른 메시지 출력 -->
    <c:set var="userRole" value="admin" />

    <c:if test="${userRole == 'admin'}">
        <p>안녕하세요, 관리자님! 시스템의 모든 기능에 접근할 수 있습니다.</p>
    </c:if>

    <c:if test="${userRole != 'admin'}">
        <p>안녕하세요, 사용자님! 접근 권한이 제한됩니다.</p>
    </c:if>
    
    <!-- 예제 2 : 자바빈즈를 활용한 조건문 처리 -->
    <c:set var="user" value='<%= new Person("BlueShare", 20) %>' />

    <c:if test="${user.name == 'BlueShare'}">
        <p>안녕하세요, ${user.name}님!</p>
    </c:if>

    <c:if test="${user.age >= 20}">
        <p>${user.name}님, 당신은 성인입니다.</p>
    </c:if>
 
 </body>
</html>
  • 예제 1: <c:if> 태그를 사용하여 사용자의 역할에 따라 다른 메시지를 출력합니다. userRole 변수를 설정하여, 사용자가 ‘admin’인지 여부에 따라 관리자와 일반 사용자에게 각각 다른 메시지를 표시합니다.
  • 예제 2: 자바빈즈 Person 객체를 생성하고, 그 속성에 따라 메시지를 출력합니다. 사용자의 이름이 ‘BlueShare’일 경우 환영 메시지를 출력하고, 나이가 20세 이상일 경우 성인임을 알리는 메시지를 추가로 출력합니다.
<c:if> 태그 예제 실행 결과 화면

2.2 <c:choose>, <c:when>, <c:otherwise> 태그

<c:choose> 태그는 여러 조건 중 하나를 선택하여 실행할 때 사용됩니다. 이는 자바의 switch 문과 유사하며, <c:when><c:otherwise> 태그와 함께 사용됩니다.

<%@ page import="common.Person" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>JSTL c:choose 태그 예제</title>
</head>
<body>
    <h1>JSTL c:choose 태그 예제</h1>

    <!-- 예제 1: 사용자 상태에 따른 메시지 출력 -->
    <c:set var="status" value="active" />

    <c:choose>
        <c:when test="${status == 'active'}">
            <p>계정이 활성화되어 있습니다.</p>
        </c:when>
        <c:when test="${status == 'inactive'}">
            <p>계정이 비활성화되어 있습니다.</p>
        </c:when>
        <c:otherwise>
            <p>계정 상태를 확인할 수 없습니다.</p>
        </c:otherwise>
    </c:choose>

    <!-- 예제 2: 자바빈즈를 활용한 예제 -->
    <c:set var="user" value='<%= new Person("BlueShare", 20) %>' />

    <c:choose>
        <c:when test="${user.age < 20}">
            <p>당신은 미성년자입니다.</p>
        </c:when>
        <c:when test="${user.age >= 20 && user.age < 65}">
            <p>당신은 성인입니다.</p>
        </c:when>
        <c:otherwise>
            <p>당신은 시니어 사용자입니다.</p>
        </c:otherwise>
    </c:choose>

</body>
</html>
  • 예제 1: status 변수를 설정하고, 사용자 계정 상태에 따라 다른 메시지를 출력합니다. active, inactive 등 다양한 상태에 따른 메시지를 출력할 수 있습니다.
  • 예제 2: 자바빈즈 Person 객체를 생성하여 user 변수에 설정한 후, 사용자의 나이에 따라 다른 메시지를 출력합니다. 이 예제에서는 사용자의 나이가 20세 미만, 20세 이상 65세 미만, 65세 이상인 경우 각각 다른 메시지가 출력됩니다.
<c:choose>, <c:when>, <c:otherwise> 태그 예제 코드 실행 화면


☞ JSTL의 흐름 제어 태그를 사용하면 자바 코드를 삽입하지 않고도 JSP 페이지에서 복잡한 조건문을 쉽게 처리할 수 있습니다. 이러한 태그들은 코드의 가독성을 높이고 유지보수를 쉽게 해주며, 다양한 조건에 따라 페이지의 동작을 제어할 수 있는 강력한 도구입니다. 다음 글에서는 반복문 처리 태그에 대해서 알아보겠습니다.

관련 이전 게시글

위로 스크롤