JSTL - 조건문 처리

Back-End/Spring 2019. 8. 16. 13:53

1. <c:if> 태그


test 속성내의 EL의 결과가 참이면 실행됩니다. else 구문은 없습니다.


name의 값이 홍길동이면 출력하는 구문


  

  <c:set var = "name" value = "홍길동" />


  <c:if test = "${name eq '홍길동'}" >


      <c:out value = "${str}" />


  </c:if>




<c:if> 태그에 사용될 수 있는 속성은 다음 세 가지 입니다.


- test : 필수 속성으로 속성값으로 EL 비교식을 가집니다.


- var : 조건 결과를 저장할 변수를 지정합니다.


- scope : 조건 결과를 저장할 변수의 저장 scope을 지정합니다.



 

  <c:if test = "${name eq '홍길동'}" var = "nameHong" scope = "session" >


  </c:if>




위의 코드는 test 속성의 결과를 nameHong라는 변수의 이름으로 session에 저장합니다.


이렇게 되면 동일 세션의 다른 페이지에서 결과를 출력할 수 있습니다.




2. test 속성에 사용될 비교 연산자



 

  ㄱ. eq (==) : 문자열 또는 숫자가 같으면 참입니다. null 또는 빈 문자열인지도 확인할 수 있습니다.


  - <c:if test="${name == '홍길동'}">

  - <c:if test="${name eq '홍길동'}">

  - <c:if test="${name == null}">

  - <c:if test="${name eq null}">

  - <c:if test="${num == 5}">

  - <c:if test="${num eq 5}">



  ㄴ. ne (!=) : 문자열 또는 숫자가 다르면 참입니다.


  - <c:if test="${name != '홍길동'}">

  - <c:if test="${name ne '홍길동'}">

  - <c:if test="${num != 5}">

  - <c:if test="${num ne 5}">



  ㄷ. empty : List 또는 배열이 비어있거나, 문자열이 null 또는 빈 문자열이면 참을 반환합니다.  

       숫자 0은 eq (==)로 비교해야 합니다.


  - <c:if test="${empty name}">


  ㄹ. not empty : List 또는 배열이 비어 있지 않을 경우, 문자열 값이 있을 경우 참을 반환합니다.


  - <c:if test="${not empty name}">




3. 논리연산자


비교연산자의 조합으로 논리 연산을 할 수 있는 논리연산자 입니다.



 

  

  ㄱ. and (&&) : 모두 참일때 참이 됩니다.


  - <c:if test="${a > b and c < d}">

  - <c:if test="${a > b && c < d}">


  ㄴ. or ( | | ) : 둘 중 하나라도 참이면 참이 됩니다.


  - <c:if test="${a > b or c < d}">

  - <c:if test="${a > b || c < d}">


  ㄷ. not (!) : 논리를 반전합니다.


  - <c:if test="${not a == ''}">

  - <c:if test="${! a == ''}">





4. <c:choose> 태그


<c:choose> 태그는 조건에 따른 여러곳으로 분기 가능하고, 조건이 맞은 것이 없을 경우 기본 분기를 제공할 수 있습니다.

<c:choose>

<c:when test="${name eq '김철수'}"> ... </c:when>

<c:when test="${name eq '박영희'}"> ... </c:when>

<c:otherwise> ... </c:otherwise>

</c:choose>

위 코드는 이름이 "김철수", "박영희" 일 경우 분기 하고 그 외의 경우에는 <c:otherwise> 로 분기 합니다.




출처

https://offbyone.tistory.com/367 [쉬고 싶은 개발자]

: