-
[JSTL] <c:if test>, <c:choose> , <c:otherwise> <c:forEach> 태그 정리 (feat. jstl if문, forEach 문, 게시판 예시)WEB/FRONT 2021. 4. 28. 17:18반응형
안녕하세요 오늘은 jstl에서 가장 자주 쓰이는 if else 문과 for문 에 대한 태그를 정리해보도록 하겠습니다.
이것만은 숙지하도록 하자!
(참고)
html tag와 마찬가지로 열어주는 태그와 닫아주는 태그가 같이 쓰인다. 사용전에 jsp페이지 상단에 필요한 라이브러리들을 import해주는것 잊지말자.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
1. <c:if> </c:if>
<c:if test="${status eq '완료'}"> <c:out value="complete" /> </c:if>
해석 : 만약 변수 status가 '완료'라면 화면에 complete를 보여준다. <c:if>는 간단한 분기처리에서 쓰임.
2. <c:choose> </c:choose>
<c:choose> <c:when test="${fn:length(Result) !=0 }"> <!-- Result값이 있다면 실행할 로직 --> </c:when> <c:otherwise> <!-- 그렇지 않다면 실행할 로직 --> </c:otherwise> </c:choose>
분기처리할때 가장 많이 쓰이는 태그이다. 자바에서 if else를 jstl로 찾고 있다면 이것을 쓰면됨. 특히 게시판 목록 보여주거나 select box 보여줄때 forEach 와 함께많이 쓰인다. 그 경우는 하단에서 살펴보고 일단은 방금 언급한 forEach 에 대해 알아보자.
3. <c:forEach> </c:forEach>
<c:forEach var="i" begin="1" end="3"> num <c:out value="${i}"/> </c:forEach>
결과 : num 1
num 2
num 3
jsp에서 반복문을 쓰고 싶을때 사용!
4. <c:out value="${item}" />
<c:out value="${item}" />
그냥 ${item} 이라고 작성해도 똑같이 나오는데 왜 굳이 <c:out value= />를 작성하는지 의문인 사람이 있습니까? (짝짝짝 좋은 질문입니다.) 다양한 이유들이 있지만 큰 이유는 '보안성' 때문입니다. <c:out 태그를 이용하면 혹시 문제가 될 수 있는 문자들(자바스크립트가 실행되는 문제 등)을 사전에 탈락 시키는 기능을 합니다.
궁금하다면 하단과 같은 스크립트 태그들을 넣어서 결과를 살펴보면 알 수 있습니다.
> - < < - > & - &
5. 활용
지금까지의 태그들을 모두 사용한 예시 코드 보겠습니다. 게시판에서 tr을 반복시키는 코드입니다.
<c:choose> <c:when test="${fn:length(Result) !=0 }"> <c:forEach var="item" items="${Result}" varStatus="status"> <tr> <td><c:out value="${item.a}" /></td> <td><c:out value="${item.b}" /></td> <td><c:out value="${item.c}" /></td> <td> <span class=" <c:if test="${item.keep_status eq '완료'}">complete</c:if> <c:if test="${item.keep_status eq '미처리'}">untreated</c:if> <c:if test="${item.keep_status eq '진행중'}">progress</c:if>"> </span> <c:out value="${item.keep_status}" /> </td> </tr> </c:forEach> </c:when> <c:otherwise> <tr> <td colspan="4" >조회된 정보가 없습니다.</td> </tr> </c:otherwise> </c:choose>
해석
: 만약 Result가 존재한다면 for문을 돌린다. 존재하지 않는다면 '조회된 정보가 없습니다.' 문구를 colspan으로 보여준다.
(앗 , $(fn:length(Result) !=0} 을 쓰기위해선 상단에 import 해줘야한다.)
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
for문을 돌리면서 keep_status 의 값에 따라 해당 tag의 class명을 달리해준다.
이번 포스팅에서는 [JSTL] <c:if test>, <c:choose> , <c:otherwise> <c:forEach> 태그 정리 (feat. jstl if문, forEach 문, 게시판 예시) 그리고 전체를 활용한 코드에 대해서 알아봤습니다. 그럼이만 다음포스팅에서.
반응형'WEB > FRONT' 카테고리의 다른 글