- c태그2024년 09월 12일
- chantleman
- 작성자
- 2024.09.12.:24
JSP에서 java 코드를 쓸 때 <% · · · %> 태그를 사용하는데
불편하기도 하고 가독성도 떨어지기 때문에 JSTL을 사용합니다.
C Tag는 JSTL의 태그 라이브러리중 하나로 변수 지정, 제어문, 페이징 처리 등을 할 수 있는 기능을 제공합니다.
C Tag를 사용하기 전에 먼저 JSP 상단에 아래 코드를 기입해 선언해줍니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
종류에는 <c:choose>, <c:forEach>, <c:if>, <c:set>, <c:out>, <c:forTokens>, <c:url>, <c:redirect>가 있습니다.
<c:choose>
- 분기처리할 때 주로 쓰이는 태그
- if, else문과 같이 when 조건에 해당되면 when의 안의 로직을 실행하고 when에 해당되는 조건이 없다면 otherwise안의 로직을 실행
로그인했을 때 프로필 사진 보이게 하기, 로그인 버튼이 로그아웃 버튼으로 바뀌기, 내가 쓴 글에만 수정, 삭제 버튼 보이게 하기 등등의 기능을 구현할 때에도 사용됩니다.
<c:choose> <c:when test="조건"> 실행문 </c:when> <c:otherwise> 실행문 </c:otherwise> </c:choose>
<c:forEach>
- 반복문 for와 동일한 기능의 태그
- items 속성은 반복할 값들이 있는 배열이나 리스트, var속성은 forEach문 안에서 반복될 변수명
<c:forEach items="배열 or 리스트" var="변수명" varStatus="상태용 변수"> ${변수명} </c:forEach>
이때, 상태용 변수를 status라고 지정했다면 아래와 같이 활용할 수 있습니다.
- ${status.current} 현재 for문의 해당하는 번호
- ${status.index} 0부터의 순서
- ${status.count} 1부터의 순서
- ${status.first} 첫번째인지 여부
- ${status.last} 마지막인지 여부
- ${status.begin} for문의 시작 번호
- ${status.end} for문의 끝 번호
- ${status.step} for문의 증가값
<c:forEach items="${fruits}" var="fruit" varStatus="status"> <span> ${status.index} : ${fruit} </span> </c:forEach>
인덱스값 나타내기
<c:forEach var="gen" items="${genreList}" varStatus="status"> ${gen.genName} <c:if test="${!status.last}">, </c:if> </c:forEach>
리스트 안의 요소들 나열할 때 콤마로 구분하기 (마지막은 콤마 제외)
<c:if>
- 조건문 설정하는 태그 (else 조건이 존재하지 않음)
- test 속성에 조건을 선언
<c:if test = "판별할 조건" var = "변수명" scope="조건의 범위"/>
<c:set var="result" value="Y"/> <c:if test="${result eq 'Y'}"> <c:out value="${result}"></c:out> </c:if>
== : eq(equal) != : ne(not equal) < : lt(less than) > : gt(greater than) <= : le(less equal) >= : ge(greater equal)
<c:set>
- 변수 선언할 때 초기값 설정하는 태그
<c:set var="변수명" value="초기값" scope="변수의 범위"/>
<c:set var="result" value="Y"></c:set> ${result}
아래 코드는 contextPath 설정할 때
<c:set var="contextPath" value="${pageContext.request.contextPath }"></c:set>
<c:out>
- 데이터를 출력하기 위한 태그
<c:out value="출력할 데이터" default="출력할 데이터 기본값"/>
<c:set var="result" value="Y"/> <c:if test"${result eq 'Y'}"> <c:out value="${result}"></c:out> </c:if>
c:set처럼 c:out을 사용하지 않아도 데이터를 출력할 수 있는데 굳이 c:out을 사용하는 이유는?
웹 사이트에 스크립트 코드를 주입하는 공격을 대비하기 위해 html 코드를 해석하지 못하게 하기 위해
<c:remove>
- 변수 삭제하기 위한 태그
<c:set var="travel" value="부산"/> <h3>전: ${travel }</h3> <p>travel 변수값을 제거해보자 </p> <c:remove var="travel"/> <h3>후: ${travel }</h3>
728x90'자바' 카테고리의 다른 글
eclipse svn 연동 (0) 2024.09.24 eclipse, github 연동 (0) 2024.09.13 where 1=1 (1) 2024.09.08 getAttribute(), getParameter(), VO (1) 2024.09.08 servlet filter (0) 2024.09.04 다음글이전글이전 글이 없습니다.댓글