- JSTL(JSP 표준 태그 라이브러리)
Apache Tomcat® – Apache Taglibs 다운로드


.jsp를 빌드한 후 추가!! 넣어
<%@ taglib 접두어="c" 우리="http://java.sun.com/jsp/jstl/core“%>
<%@ page language="java" contentType="text/html; cherset=UTF-8"
pageEncoding ="UTF-8" %> <!-- jsp -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!-- JSTL -->
<!--
prefix : 접두사
uri (Uniform Recource Indentifier) : 자원 구분 식별자 (주소형태)
-->
- JSTL이란 무엇입니까?
— JSP에서 일반적이거나 일반적으로 사용되는 Java 코드 표기법
단순히 레이블이 지정되고 기본적으로 제공되는 것입니다.
예: if, for, 배열/컬렉션 길이, 문자열 대체, 숫자 데이터 형식 변경, 데이터 구문 분석, 범위 변수 선언 등
- JSTL 라이브러리 등록 방법
— Apache Tomcat® – Apache Taglibs 다운로드 연결하다
–> Jar 파일 -> Impl, Spec, EL 다운로드.
–> webapp/Web-INF/lib 폴더에 추가.
- JSTL을 사용하기 위한 선언 방식
— 추가하려는 JSTL taglib를 JSP 파일의 시작 부분에 추가합니다.
<%@ taglib 접두어="c" 우리="http://java.sun.com/jsp/jstl/core“%>
1. 변수 선언( c:태그 설정 )
— 변수를 선언하고 값을 초기화하는 태그
(원하는 영역의 빌트인 오브젝트에 값을 설정)
— 씨:세트 재산
— var: 변수 이름(setAttribute의 키 값)
— value : 할당할 값
— 범위 : 내장 개체 범위(기본값: 페이지)
2. 변수 삭제( 씨: 제거 )
— c:set / setAttribute()로 추가된 값 제거
— 씨: 제거 재산
— var: 삭제할 변수 이름(key)
— 범위: 삭제할 내장 개체의 범위(기본값: 모든 범위)
<body>
<h3> JSTL 사용을 위한 선언방법</h3>
<!-- scriptlet 작성법 -->
<% pageContext.setAttribute("num1", 10); %> <!-- num1 에 10 선언 -->
<!-- JSTL 작성법 -->
<c:set var="num2" value="20"/> <!-- num2 에 20 선언 -->
${num1} / ${num2} <!-- 10 / 20 -->
<c:set var="num2" value="300" scope="request"/> <!-- request scope에 num2 , 300세팅 -->
<h4>${num2}</h4> <!-- 20 -->
<h4>${requestScope.num2}</h4> <!--request scope num2 = 300 -->
<c:set var="temp" value="임시값" scope="session"/> <!-- temp 에 "임시값" 선언 -->
<h4> temp : ${temp}</h4> <!-- "임시값" -->
<c:remove var="temp"/> <!-- temp 삭제 . -->
temp : ${temp} <br>
<c:set var="test" value="page" scope="page"/>
<c:set var="test" value="request" scope="request"/>
<c:set var="test" value="session" scope="session"/>
<c:set var="test" value="application" scope="application"/>
<c:remove var="test" scope="request"/> <!-- requestScope test변수 삭제. -->
${pageScope.test} / ${requestScope.test} <!-- page / / session / application -->
/ ${sessionScope.test } / ${applicationScope.test}
</body>
3. 조건문 – if ( c:만약 징후 )
— 단일 if 문(다른 것은 없음)
— 주의
1) 테스트 속성 값은 EL 구문으로 작성해야 합니다.
2) 테스트 속성 값 ” “에는 공백이 허용되지 않습니다.
<!-- Scriplet 작성법 -->
<% if ( 1 == 1 ) { %>
출력합니다.
<% } %>
<!-- JSTL 작성법 -->
<c:if test="${1==1}">
JSTL작성법
</c:if>
4. 조건문 – if ~ else if ~ else ( c:choose , c:when , c:otherwise )
— c: 선택 : 쉬는 날과 그렇지 않은 날
(현재 태그에 if ~ else if ~ else를 씁니다.)
— c:언제 : if/else if를 나타내는 태그.
속성은 test 만입니다. (조건부 속성)
— c:그렇지 않으면 : 다른 날
속성이 없습니다.
<c:set var="temp2" value="150"/>
<c:choose>
<c:when test="${ temp2 > 100 }">
100보다 크다
</c:when>
<c:when test="${ temp2 < 100 }">
100보다 작다
</c:when>
<c:otherwise>
100과 같다
</c:otherwise>
</c:choose>
5번째 루프( c:forEach 태그 )
— 일반 + 추가 기능
— 재산
하나) 바르 : 현재 반복 횟수에 해당하는 변수(내부 나)
2) 시작 : 반복할 때 바르 씨앗
3) end: 반복의 끝 바르 값
4) 단계: 각 반복 바르증분 값(기본값 1)
5) 항목: 반복적으로 액세스되는 객체(배열, 컬렉션 객체)
6) varStatus: 현재 반복 상태에 대한 정보를 제공하는 변수 선언
varStatus=”변수 이름”
-> c:forEach 문 내에서 “변수 이름”을 통해 원하는 값을 얻을 수 있습니다.
*** varStatus에서 제공하는 값
— current : 현재 반복 횟수(현재 바르 값)
또는 반복되는 객체(컬렉션/배열 요소)
— index : 현재 인덱스 값을 반환합니다(0부터 시작).
— count: 현재 라운드 횟수의 반복 횟수를 반환합니다(1부터 시작).
— first : 첫 번째 반복이면 true, 그렇지 않으면 false
— 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문 + varStatus</h3>
<table border="1">
<c:forEach var="n" begin="1" end="10" varStatus="vs">
<c:choose>
<%-- 첫번째 반복일 경우 --%>
<c:when test="${vs.first}">
<tr>
<th class="first">${n}</th>
<td class="first">${n}번 게시글입니다.</td>
</tr>
</c:when>
<%-- 마지막 반복일 경우 --%>
<c:when test="${vs.last}">
<tr>
<th class="last">${n}</th>
<td class="last">${n}번 게시글입니다.</td>
</tr>
</c:when>
<c:otherwise>
<tr>
<th>${n}</th>
<td>${n}번 게시글입니다.</td>
</tr>
</c:otherwise>
</c:choose>
</c:forEach>
</table>

6. for문 개선( c:forEach 확장 for 문 )
–param.lang : 매개변수 아래의 lang 값을 가져와서 출력합니다.
그러나 lang이라는 매개변수가 여러 개 있는 경우 첫 번째 매개변수만 검색됩니다.
–paramValues.lang : lang이라는 모든 매개변수를 검색하여 배열로 반환합니다.