< JSTL Core Library >
- JSP에서 사용하는 커스텀 액션 태그
- 공통적으로 사용하는 코드들의 집합을 보다 쉽게 사용할 수 있도록 태그화해서 표준으로 제공하는 라이브러리
* 라이브러리 다운로드 후 추가 방법
1) http://tomcat.apache.org/download-taglibs.cgi 로 접속
2) Standard-1.2.5 Jar files 4개 다운로드
3) WEB-INF/lib폴더에 추가
* JSTL 선언 방법
JSTL을 사용하고자 하는 jsp페이지 상단에 taglib지시어를 사용해서 선언함
[ 표현법 ]
<@ taglib prefix="접두어" uri="라이브러리 파일상의 uri주소">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1. 변수(속성 == attribute)
* 변수 선언(<c:set var="변수명" value="리터럴" scope="스코퍼영역지정(생략가능)" />)
- 변수를 선언하고 초기값을 대입해두는 기능을 제공
- 더 나아가서 해당 변수를 어떤 scope영역에 담아둘건지 지정 가능함
(생략시 pageScope에 담김)
=> 해당 scope영역에 setAttribute라는 메소드를 이용해서 key + value형태로 데이터를 담아둔다라고 생각하면 됨
=> c:set을 통해 선언된 변수는 EL로 접근해서 사용 가능 (스크립팅 원소로는 접근 불가능)
* 주의사항
- 변수의 타입을 별도로 지정하지 않음
- 반드시 해당 변수에 담아두고자 하는 값(value속성에 담길 리터럴)을 무조건 셋팅해야 함
(즉, 선언과 동시에 초기화)
<c:set var="num1" value="10" /><!-- pageScope에 담김 == pageContext.setAttribute("num1", 10); -->
<c:set var="num2" value="20" scope="request" /><!-- requestScope에 담김 == request.setAttribute("num2", 10); -->
* 변수 삭제 (<c:remove var="제거하고자하는 변수명" scope="스코프영역지정(생략가능)" escapeXml="true(기본값, 생략가능)" >)
- 해당 변수를 scope에서 찾아서 제거하는 태그
- scope 지정 생략 시 모든 scope에서 해당 변수를 다 찾아서 제거함
=> 해당 scope에 .removeAttribute("키값"); 메소드를 이용해서 제거하는 것과 같다고 생각하면 됨
1) 특정 scope를 지정해서 삭제 <br>
<c:remove var="result" scope="request" />
result : ${ result }<br>
2) 모든 scope에서 삭제 <br>
<c:remove var="result" />
모든 scope에서 삭제 후 result : ${ result }<br>
* 변수 출력 (<c:out value="출력하고자하는 값" default="기본값(생략가능)" />)
- 데이터를 출력하려고 할 때 사용하는 태그
- default : 기본값, value속성에 출력하려는 값이 없을 경우 대체해서 기본값으로 출력할 내용들을 기술(생략 가능)
result를 EL구문으로 출력 : ${ result }<br>
result를 c:out으로 출력 : <c:out value="${ result }" /><br>
result를 c:out으로 출력할건데 default를 지정해서 출력 : <c:out value="${ result }" default="값이 없음" /><br><br>
<!-- escapeXml 테스트 -->
<!-- 테스트를 하기 위한 변수 선언 -->
<c:set var="outTest" value="<b>출력테스트</b>" />
outTest를 c:out으로 출력할건데 : <c:out value="${ outTest }" /><br>
outTest를 c:out으로 출력할건데 escapeXml속성을 false로 지정하고 출력 : <c:out value="${ outTest }" escapeXml="false" /><br>
2. 조건문 - if(<c:if test="조건식"> 조건이 true일 경우 실행할 내용 </c:if>)
- JAVA의 단일 if문과 비슷한 역할을 하는 태그
- 조건식은 test라는 속성에 작성 (조건을 작성할 경우에는 반드시 EL구문으로 작성해야 함)
<c:if test="${ num1 gt num2 }">
<b>num1이 num2보다 큽니다.</b>
</c:if>
<c:if test="${ num1 le num2 }">
<b>num1이 num2보다 작거나 같습니다.</b>
</c:if>
3. 조건문 - choose, when, otherwise
[ 표현법 ]
<c:choose>
<c:when test="조건1"> ~~ </c:when>
<c:when test="조건2"> ~~ </c:when>
...
<c:otherwise> ~~ </c:otherwise> => else블럭 / switch문의 default
</c:choose>
- JAVA의 if-else, switch문과 비슷한 역할을 하는 태그
- 각 조건들을 c:choose의 하위요소로 c:when을 통해서 작성
- c:otherwise에는 조건을 적어주지 않음
<c:choose>
<c:when test="${ num1 eq 20 }"> <!-- if 블럭 -->
<b>num1은 20</b>
</c:when>
<c:when test="${ num1 eq 10 }"> <!-- else if 블럭 -->
<b>num1은 10</b>
</c:when>
<c:otherwise> <!-- else 블럭 -->
<b>나는 조건이 없어</b>
</c:otherwise>
</c:choose>
4. 반복문 - forEach
[ 표현법 ]
- for loop문
<c:forEach var="변수명" begin="초기값" end="끝값" step="증가시킬값(생략가능)">
반복적으로 실행할 코드
</c:forEach>
=> step은 생략 시 기본값이 1
<c:forEach var="i" begin="1" end="10">
반복 확인 : ${ i } <br>
</c:forEach>
<c:forEach var="i" begin="1" end="6">
<h${ i }>태그 안에도 적용이 가능하다.</h${ i }>
</c:forEach>
- 향상된 for문
<c:forEach var="변수명" items="순차적으로접근할 배열명 또는 컬렉션명">
</c:forEach>
<c:set var="colors">
green, blue, yellow, red, black, brown
</c:set>
colors 값 : ${ colors } <br>
<ul>
<c:forEach var="c" items="${ colors }">
<li style="color:${ c }">${ c }</li>
</c:forEach>
</ul>
5. 반복문 - forTokens
[ 표현법 ]
<c:forTokens var="각값을 보관할 변수명" items="분리시키고자하는 문자열" delims="구분자">
반복적으로 실행할 구문(출력만)
</c:forTokens>
- 구분자를 통해서 분리된 각각의 문자열에 순차적으로 접근하면서 반복 수행
- JAVA의 split("구분자") 또는 StringTokenizer와 비슷한 역할
<c:set var="dream" value="로또당첨,집사기/퇴근하기-잠자기.주식대박" />
<ul>
<c:forTokens var="d" items="${ dream }" delims=",/-.">
<li>${ d }</li>
</c:forTokens>
</ul>
6. 쿼리스트링 관련 태그
[ 표현법 ]
<c:url var="변수명" value="요청할url">
<c:param name="키값" value="밸류값" />
<c:param name="키값" value="밸류값" />
<c:param name="키값" value="밸류값" />
<c:param name="키값" value="밸류값" />
<c:param name="키값" value="밸류값" />
...
</c:url>
- url경로를 생성하고, 쿼리스트링을 정의할 수 있는 태그
<a href="list.do?cPage=1&num=2">기존 방식으로 요청</a>
<!-- c:url -->
<c:url var="query" value="list.do">
<c:param name="cpage" value="1" />
<c:param name="num" value="2" />
</c:url>
<a href="${ query }">c:url방식으로 요청</a>
'개발 > Web' 카테고리의 다른 글
[AJAX] AJAX 개요 / jQuery방식 AJAX 사용법 (0) | 2022.12.18 |
---|---|
[Java] JSP - JSTL Formatting Library / Functions Library (0) | 2022.12.15 |
[Java] JSP - JSP 구성 인자 / JSP 액션 태그 (0) | 2022.12.13 |
[Java] JSP - JSP 내장객체 / EL구문 (Expression Language) (0) | 2022.12.13 |
[Java] Servlet - Request / Session / Application / Page 객체 (0) | 2022.11.18 |