자바

c태그

chantleman 2024. 9. 12. 18: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>

'자바' 카테고리의 다른 글

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