본문 바로가기
컴퓨터관련/JSP, ASP, Ja vaScript

JSTL에서 if, choose로 분기처리하기

by 빛과 어둠사이 2021. 3. 9.
728x90
반응형
SMALL

오늘은 JSTL 문법에 대해서 정리를 해보려고 합니다.

JSTL에서 분기처리 하는 방법을

정리해보려고 합니다.

 

분기처리를 할 때,

제일 많이 사용되는 것이 

if, casw when 이라고 생각을 합니다.

이것들은 배울 때도 초반에 배우고

많이 사용이 되는 것들입니다.

JSTL에서도 이것을 이용하여 분기처리를 진행합니다.

 

그래서 오늘은 JSTL에서 분기처리 하는 방법 및

연산자에 대해서 정리를 해보도록 하겠습니다.

 

 

 

1. if

우선 제일 기본적으로 많이 쓰이는 것인

if입니다.

JSTL에서도 if를 이용하여 분기처리를 할 수 있습니다.

하지만, 다른 언어들처럼 if를 자유롭게 쓰면서 분기처리를 하기는 힘듭니다.

if를 이용하여 할 수는 있으나, 

다중if, else if를 할 수는 없습니다.

해당 조건이 참일 때만 하는 그런 것만 가능합니다.

 

사용하는 방법은 <c:if> 태그를 이용하는 것입니다.

실제 예제 소스를 확인해보도록 하겠습니다.

<c:set var="name" value="홍길동" />
<c:set var="pnt" value="if참" />
<c:if test="${name eq '홍길동'}">
    <c:out value="${pnt}" />
</c:if>

위와 같이 해주시면 되십니다.

name 이라는 변수에 값이 홍길동이면,

pnt 변수의 값을 출력해주는 그런 JSTL 입니다.

 

 

 

 

2. if 연산자

JSTL에서 if를 쓸 때, test라고 문구를 적습니다.

이것은 그냥 JSTL 문법입니다.

그리고 test 속성에서의 연산자를 정리해보도록 하겠습니다.

 

 

2-1. 같다

같다는 말 그대로 같을 경우 참을 리턴해주는 것입니다.

null 혹은 문자열, 숫자 모두 같으면

참을 리턴해 주는 것입니다.

방법은 == 혹은 eq 입니다.

 

실제 예제 소스를 확인해보도록 하겠습니다.

<c:if test="${name == '홍길동'}">a</c:if>
<c:if test="${name eq '홍길동'}">a</c:if>
<c:if test="${name == null}">a</c:if>
<c:if test="${name eq null}">a</c:if>
<c:if test="${num == 10}">a</c:if>
<c:if test="${num eq 10}">a</c:if>

위와 같이 해주시면 되십니다.

위는 모두 동일한 조건으로

== 혹은 eq를 넣어도

동일한 결과가 나오게 됩니다.

 

 

 

2-2. 다르다

같다와 반대되는 개념으로 

값이 다르게 되면 참을 리턴해 주는 것입니다.

방법으로는 != 혹은 ne로 해주시면 되십니다.

 

실제 사용 예제를 확인해보도록 하겠습니다.

<c:if test="${name != '홍길동'}">a</c:if>
<c:if test="${name ne '홍길동'}">a</c:if>
<c:if test="${num != 10}">a</c:if>
<c:if test="${num ne 10}">a</c:if>

위와 같이 해주시면 되십니다.

!= 과 ne 모두 동일한 결과를 가지고 오게 됩니다.

 

 

 

 

2-3. 배열, List 비어있는지 확인

이번에는 배열 혹은 List가 비어있는지

확인하는 방법입니다.

null 혹은 비어있으면 참을 반환하게 되는 연산자입니다.

연산자는 empty 입니다.

 

실제 사용 예제를 확인해보도록 하겠습니다.

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

위와 같이 해주시면 되십니다.

name이 비어있으면 참을 리턴해주는 것입니다.

 

 

 

 

2-4. 배열, List 비어있지 않은지 확인

이번에는 반대로 데이터가 있는지

비어있지 않은지 확인하는 것입니다.

이번에도 연산자는 동일하게 empty 입니다.

하지만 앞에 not 을 붙이는 것입니다.

 

실제 사용 예제를 확인해보도록 하겠습니다.

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

위와 같이 해주시면 되십니다.

name이라는 배열 혹인 list의 값이 있으면

참을 리턴해 주는 것입니다.

 

 

 

 

 

3. 논리연산자

이번에는 JSTL에서의 논리연산자에 대해

확인해보도록 하겠습니다.

논리연산자란 조합을 할 때 쓰는 것으로

여러가지 조건들을 걸 때, and 혹은 or 등을 거는 것입니다.

 

 

 

 

3-1. and

and 조건은 모든 조건이 참일 때,

그 때 참을 리턴해주는 것입니다.

사용방법은 and 혹은 && 입니다.

 

실제 사용 예제를 확인해보도록 하겠습니다.

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

위와 같이 해주시면 되십니다.

위 조건은 a가 b보다 크고, c가 d보다 작을 때

참이 되는 것입니다.

 

 

 

3-2. or

or 조건은 두개 혹은 두개 이상의 조건 중

하나의 조건이라도 참이면 참을 리턴해주는 것입니다.

 

사용방법은 or 혹은 || 를 사용해주시면 되십니다.

 

실제 사용 예제를 확인해보도록 하겠습니다.

 

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

 

위와 같이 해주시면 되십니다.

a가 b보다 크거나, c가 d보다 작으면

참이 되는 그런 것입니다.

 

 

3-3. not

not 연산자는 논리값을 반전시키는 것입니다.

즉, 참이였는데 not를 붙이면 거짓이 되고

flase였는데 not이 붙으면 true가 되는 것입니다.

 

사용방법은 not 혹은 ! 를 붙이면 됩니다.

 

실제 사용 예제를 확인해보도록 하겠습니다.

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

위처럼 해주시면 되십니다.

위 소스는 a가 ''이지 않으면 이라는 조건으로 보면 됩니다.

a가 ''이면 참이되었다가

not이 되면서 false가 되는 것입니다.

 

 

 

 

4. choose를 이용한 다중 분기처리

이번에는 JSTL에서의 다중분기처리를

정리해보도록 하겠습니다.

위에서 얘기한 것처럼 if로는 다중분기는 할 수가 없습니다.

그렇기 때문에 else if, else 처럼 다중으로 분기처리가 필요할 때는

choose 태그와 when 태그를 이용하여

분기처리를 진행하면 됩니다.

 

실제 사용 예제를 확인해보도록 하겠습니다.

<c:choose>
<c:when test="${name eq '홍길동'}">a</c:when>
<c:when test="${name eq '홍길순'}">b</c:when>
<c:otherwise>c</c:otherwise>
</c:choose>

위처럼 해주시면 되십니다.

choose로 다중분기처리를 진행하겠다고

태그를 설정해 놓습니다.

그리고 when 태그를 이용하여 분기처리를 진행합니다.

teset안에서의 속성은 if에서와 동일하게 됩니다.

그리고 otherwise 태그를 이용하여

else 처리를 진행하는 것입니다.

 

위 소스를 설명하면

name값이 홍길동이면 a

name값이 홍길순이면 b

name값이 그 외의 다른 값이면 c

 

이렇게 나오게 되는 것입니다.

 

 

 

 

 

오늘은 JSTL에서의 분기처리에 대해서

정리를 하였습니다.

if와 choose when 태그를 이용하여

분기처리 하는 방법을 정리하였습니다.

그리고 test 안에서의 연산자에 대해서도

정리를 해보았습니다.

 

쓸 때마다 드는 생각이지만

왜 test로 했는지는 모르겠네요.

어쨌든 이렇게 문법이 되었으니

그냥 사용해주시면 될 것 같습니다.

 

 

 

이상으로 JSTL에서의 if choose when 등을 이용한

분기처리 및 다중분기처리하는 방법이였습니다~~

그리고 test에서의 연산자에 대한 정리였습니다~

 

 

 

 

 

 

Core Jstl: Mastering the JSP Standard Tag Library Paperback, Prentice Hall

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

 

 

 

728x90
반응형
LIST