JSP - DAY 3

NewTypeAsuka·2023년 4월 21일
0

Server/Network@

목록 보기
5/9

1. JSTL/JSP 라이브러리

JSTL(Jsp Standard Tag Library)

  • JSP에서 자주 사용되거나 공통적으로 사용되는 Java 코드(if, for, 변수선언, 형변환)를
    스크립틀릿 대신 HTML 태그 형식으로 태그화하여 표준으로 제공하는 라이브러리
  • JSTL 다운로드 방법
    1) JSTL 다운로드 페이지 이동:
    https://tomcat.apache.org/download-taglibs.cgi
    2) Jar Files의 Impl, Spec, EL 다운로드
    3) /webapp/WEB-INF/lib 폴더에 라이브러리 파일(.jar) 추가
    4) JSTL 라이브러리를 사용하고자 하는 JSP 파일 상단에 taglib JSP 지시자 태그 추가

변수 선언(c:set 태그)

  • 변수 선언(지정된 scope에 속성 세팅)을 위한 태그
  • c:set에 작성 가능한 속성:
    1) var: 선언할 변수명(속성 key)
    2) value: 대입할 값
    3) scope: page, request, session, application 중 하나 지정(기본값 page)
<%
    // 스크립틀릿으로 pageScope에 속성 세팅하는 방법
    pageContext.setAttribute("num1", 10);
%>
<%-- JSTL(c:set)으로 pageScope에 속성 세팅하는 방법 --%>
<c:set var="num2" value="20" scope="page"/>
num1: ${num1}
num2: ${num2}

변수 제거(c:remove 태그)

  • 변수 제거(내장 객체에 세팅된 속성 제거)를 위한 태그
  • c:remove에 작성 가능한 속성:
    1) var: 삭제할 변수명(속성 key)
    2) scope: page, request, session, application 중 하나 지정
    (기본값이 모든 scope임에 주의)

변수 출력(c:out 태그)

  • 변수 출력 O:
    ${key} EL 구문과 유사
  • 단 escapeXml="true" 설정 시 html 태그 해석 X
    escapeXml="false" 설정 시 html 태그 해석 O
<c:set var="temp" scope="session" value="<h1>점심시간</h1>"/>
HTML 태그 해석 X: <c:out value="${temp}"/>
<br>
HTML 태그 해석 O: <c:out value="${temp}" escapeXml="false"/>
<br>
HTML 태그 해석 O: ${temp}

2. JSTL 조건문/반복문

조건문 if(c:if 태그)

  • 단독 if문(else 없음)
  • c:if에 작성 가능한 속성: test
  • 주의사항:
    1) test의 속성 값은 무조건 EL 구문으로 작성
    2) test의 속성 값은 true 또는 false가 나오는 조건식이여야 함
    3) test의 속성 값을 작성하는 "" 내부에는 앞뒤 공백이 존재해서는 안됨
<c:if test="${ money==50000 }">
	<h3 style="color:gold">돈이 50000원 있습니다.</h3>
</c:if>
<%-- EL에서 모든 비교는 == 또는 eq / != 또는 ne 사용 --%>
<%-- EL에서 문자열은 ''로 표현 --%>
<c:if test="${name=='홍길동'}">
	<h3 style="color:red">이름은 홍길동입니다.</h3>
</c:if>

조건문 choose, when, otherwise(c:choose 태그)

  • 1) c:when 태그:
    if, else if 역할의 태그
    • c:when에 작성 가능한 속성: test
  • 2) c:otherwise:
    else 역할의 태그, 속성 없음
<c:choose>
	<c:when test="${param.val gt 100}">
		100 초과
	</c:when>
	<c:when test="${param.val < 100}">
		100 미만
	</c:when>
	<c:otherwise>
		100과 같다
	</c:otherwise>
</c:choose>

반복문 forEach(c:forEach 태그)

  • 일반 for문 + 추가 기능
  • c:forEach에 작성 가능한 속성:
    1) var: 현재 반복 횟수에 해당하는 변수
    2) begin: 반복 시 var 시작 값
    3) end: 반복이 종료될 var 값
    4) step: 반복 시 마다 var의 증가 값
    5) items: 반복 접근한 객체(배열, 컬렉션 객체)
    6) varStatus: 현재 반복 상태와 관련된 정보를 제공하는 변수 선언
    • varStatus에서 제공되는 값:
      1) current: 현재 반복 횟수(현재 var 값)
      또는 현재 반복 접근 중인 객체(컬렉션/배열 요소)
      2) index: 현재 인덱스 값 반환(0부터 시작)
      3) count: 현재 몇바퀴째인지 반복 횟수 반환(1부터 시작)
      4) first: 첫번째 반복이면 true, 아니면 false
      5) last: 마지막 반복이면 true, 아니면 false
<h3>일반 for문 형식으로 사용하기</h3>
<c:forEach var="i" begin="1" end="6" step="1">
	<h${i}>현재 i 값: ${i}</h${i}>
</c:forEach>
<h3>향상된 for문 형식으로 사용하기</h3>
<c:forEach var="book" items="${bookList}">
	${book}<br>
</c:forEach>
<h3>향상된 for문 형식으로 사용하기</h3>
	<c:forEach var="book" items="${bookList}" varStatus="vs">
	<li>
		index: ${vs.index}
		count: ${vs.count}
        current: ${vs.current}
        first: ${vs.first}<br>
        last: ${vs.last}<br>
	</li>
</c:forEach>

0개의 댓글