JSP/Servlet | JSTL(JSP Standard Tag Library) | 조건문 <c:if>, <c:choose>, <c:when>, <c:otherwise>

JSTL에서의 조건문에 대해서 알아보자.

조건문 <c:if>

JSTL 조건에서는 <c:if> ~ </c:if>로 이루워 있다. 주의할 점은 다른 언어와 다르게 else가 없다는 것이다.

속성 설명

항목 설명 필수 여부 기본값
test 평가할 조건 필수
var 조건 결과를 저장할 변수의 이름
scope 조건 결과를 저장할 변수의 범위 page

예시

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title><c:if> Tag Example</title>
</head>
<body>
    <c:set var="aaa" value="1" scope="session"/>
    <c:if test="${aaa == 1}">
        <p>a는 1입니다.<p>
    </c:if>
</body>
</html>

결과 표시

a는 1입니다.

조건문 <c:choose>, <c:when>, <c:otherwise>

<c:choose>는 Java 언어의 switch~ case와 비슷하게 여러 조건중에 하나를 선택한다. <c:choose>는 switch에 해당되고 <c:when>는 case에 해당되며, <c:otherwise>는 default에 해당된다.

속성

  • <c:choose> 태그는 어떠한 속성도 없다.
  • <c:when> 태그에는 아래에 나열된 하나의 속성이 있다.
  • <c:otherwise> 태그는 어떠한 속성도 없다.
항목 설명 필수 여부 기본값
test 평가할 조건 필수

예시

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

<html>
<head>
      <title><c:choose> Tag Example</title>
</head>
<body>
    <c:set var="a"  value="${256}" scope="session"/>
    <c:set var="result" value="${a % 3}" scope="session"/>

    <c:choose>
        <c:when test="${result == 1 || salary == 2}">
            ${a} 는 3의 배수가 아니다.
        </c:when>         
        <c:otherwise>
           ${a} 는 3의 배수이다.
         </c:otherwise>
    </c:choose>
   
</body>
</html>

결과 표시

${a} 는 3의 배수가 아니다.

비교 수식 : eq, ne, empty

조건문을 사용할 때에는 반드시 값과의 비교를 작성하게 되는데, JSTL에서는 eq, ne, empty와 같은 비교수식를 이용할 수 있다.

수식 기호 설명
eq == 비교하는 값이 동일한지 확인할 때 사용한다.
ne != 비교하는 값이 동일하지 않은지 확인할 때 사용한다.
empty == null 비교하는 값이 null 인지 확인할때 사용한다. null이 아닌경우를 표현할때는 !empty 로 표현하면 된다.

eq (==) 예시

<c:if test="${list eq null}">...</c:if> <!-- null 비교 -->
<c:if test="${int eq 0}">...</c:if> <!-- 숫자 비교 -->
<c:if test="${str eq 'a'}">...</c:if> <!-- 문자열 비교 -->

ne (!=) 예시

<c:if test="${list ne null}">...</c:if> <!-- null 비교 -->
<c:if test="${int ne 0}">...</c:if> <!-- 숫자 비교 -->
<c:if test="${str ne 'a'l}">...</c:if> <!-- 문자열 비교 -->

empty (== null) 예시

<c:if test="${empty list}">...</c:if> <!-- collection 객체가 비어 있을 경우 -->
<c:if test="${!empty list}">...</c:if> <!-- collcetion 객체가 비어 있지 않을 경우 -->