[JSP] 11. JSP 표준 태그 라이브러리 (JSTL)

Min's Study Note·2023년 11월 17일
0

JSP

목록 보기
13/16

▣ JSTL이란..??

  • JSTL(JSP Standard Tag Library)은 JSP에서 빈번하게 사용되는 조건문, 반복문 등을 처리해주는태그를모아 표준으로 만들어 놓은 라이브러리
  • 스크립틀릿 없이 태그만으로 작성할 수 있기 때문에 코드가 간결해지고 가독성이 높아짐

▣ JSP 와 JSTL 코드 비교

▣ JSTL에서 제공하는 태그 종류

  • 이중 XML, Function, SQL 태그는 거의 사용되지 않음

▣ JSTL 사용을 위한 taglib 지시어

  • JSTL 태그 중 core 태그를 사용하기 위한 지시어
<%@ taglib prefix="c" uri="jakarta.tags.core"%>

▣ 코어(Core) 태그의 종류

▣ <c:set> 태그

  • <c:set> 태그는 EL에서 사용할 변수나 자바빈즈를 생성할 때 사용

▣ 속성

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ⇐ core태그 사용을 위한 taglib 지시어선언변수선언의 4가지 방법
<c:set var="directVar" value="100" /> ⇐ 방법1 : 직접입력
<c:set var="elVar" value="${ directVar mod 5}" /> ⇐ 방법2 : EL사용
<c:set var="expVar" value="<%= new Date() %>" /> ⇐ 방법3 : 표현식 사용
<c:set var="betweenVar">변수값 요렇게 설정</c:set> ⇐ 방법4 : 태그사이에 값 지정
<h4>EL을 이용해 변수 출력</h4>
<li>directVar : ${ pageScope.directVar }</li>
<li>elVar : ${ elVar }</li>
<li>expVar : ${ expVar }</li>
<li>betweenVar : ${ betweenVar }</li>

[Note] scope 속성을 통한 영역지정이 없으므로 가장 좁은 page영역에 저장됨

▣ <c:remove> 태그

  • <c:set> 태그로 설정한 변수를 제거할 때 사용
  • JSP에서 영역의 속성을 제거할 때 사용하는 removeAttribute( ) 메서드와 같은 역할

    형식 : <c:remove var="변수명" scope ="영역" />

<c:set var="scopeVar" value="Page Value" /> ⇐ 4가지 영역에 동일한 이름으로 저장
<c:set var="scopeVar" value="Request Value" scope="request" />
<c:set var="scopeVar" value="Session Value" scope="session" />
<c:set var="scopeVar" value="Application Value" scope="application" />
<li>scopeVar : ${ scopeVar }</li> ⇐ 영역명 지정없이 출력하면 가장 좁은 page영역이 선택됨
<c:remove var="scopeVar" scope="session" /> ⇐ 세션 영역의 속성 삭제
<c:remove var="scopeVar" /> ⇐영역을 지정하지 않으면 모든 영역의 속성이 삭제됨

▣ <c:if> 태그

  • 자바의 if와 동일하게 제어 구문을 작성할 때 사용
  • else가 별도로없기 때문에 여러 조건을 나열하는 형태로 작성하기에는 어려움

    형식 :<c:if test="조건" var="변수명" scope="영역"> 조건이 true일 때 출력할 문장
    </c:if>

▣ <c:choose>, <c:when>, <c:otherwise> 태그

<c:set var="number" value="100" /> ⇐ 변수 선언
<c:choose>
<c:when test="${ number mod 2 eq 0 }"> ⇐ 2로 나눈 나머지가 0일때
${ number }는 짝수입니다. </c:when>
<c:otherwise> ⇐ 위 조건이 거짓일때(else와 동일한 역할)
${ number }는 홀수입니다. </c:otherwise>
</c:choose>

▣ <c:forEach> 태그

  • 일반 for문 형태 : 시작과 종료값을 지정
  • 향상된 for문 형태 : 배열이나 컬렉션을 사용하여 반복

  • varStatus 속성
    - var속성과 별개로 루프의 자세한 상태 정보를 반환
    - for문의 형태에 따라 확인할 수 있는 값이 조금 다름

▣ <c:url> 태그

형식 :<c:url value="설정한 경로" scope="영역" />

  • 지정한 경로와 매개변수를 이용해서 컨텍스트 루트를 포함한 URL을 생성
  • var 속성을 통해 원하는 위치에 출력할 수 있음
<c:url value="/11JSTL/inc/OtherPage.jsp" var="url"> ⇐ URL생성
<c:param name="user_param1" value="Must" /> ⇐ 파라미터
<c:param name="user_param2">Have</c:param>
</c:url>
<a href="${url }">OtherPage.jsp 바로가기</a> ⇐ “OtherPage.jsp?user_param1=Must&” 와 같은 링크가생성

[Note] 예제 실행후 소스보기를 해보면 href=”/MustHaveJSP/11JSTL/...” 과 같이 컨텍스트 루트 경로가포함되어 있는것을 볼 수 있다.

👉 Intellij에서 태그라이브러리 taglib uri 불러오기 오류 해결법

  • maven repository에서 dependency 내용을 pom.xml에 추가하고, maven 동기화 버튼 클릭

0개의 댓글

관련 채용 정보