JSTL(JSP Standard Tag Library)
JSP에서 사용하는 커스텀 태그
공통으로 사용하는 코드의 집합을 사용하기 쉽게 태그화 하여 표준으로 제공한 것
라이브러리 등록 후 사용 가능
선언방식(사용하고자 하는 jsp 파일에 선언)
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
사용 예시
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:out value="${ 'java' }"/>
JSTL 태그 종류
Core Tags , Formatting Tage, Function
Core Tags
태그이름 | 설명 | 선언방식 | 종류 |
Core Tags | 변수와 url, 조건문, 반목문 등의 로직과 관련된 JSTL 문법 제공 |
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> | <c:set> ,<c:remove> <c:out>,<c:if> <c:choose>, <c:forEach> <c:forTokens>, <c:url> |
1 . <c: set>
변수를 선언하고 그 변수에 초기값을 대입하는 기능
변수 타입은 별도로 선언 하지 않음
초기값은 반드시 기술해야 함
선언한 변수는 EL 식 안에서 사용가능
스크립트릿 요소에서는 사용 불가
- 변수 선언
선언 방식
<c:set var="변수명" value="초기값/>
scope 속성을 생략하면 기본적으로는 pageScope에 저장 됨
<c:set var="num1" value="100" scope="session"/>
<c:set var="num2" value="200" scope="session"/>
스크립트릿 요소에서 사용 불가
<%int sum = num1 + num2; %>
EL에서 사용 가능
<c:set var="sum" value="${ num1 + num2 }"/>
화면상에 출력
${ num1 } + ${ num2 } = ${ sum }
=> 100 + 200 = 300 로 출력됨
스크립팅 요소에서 선언 된 변수는 EL이나 스크립팅 요소로 사용 가능
EL을 활용하기 위해서는 스크립팅 요소를 value 속성으로 지정한 c:set 태그가 필요
<% int num3 = 10, num4 = 20; %>
${num3} + ${ num4 } =${ num3 + num4 }
=> 값이 없는 걸로 출력
value 속성으로 지정하면 출력 가능
<c:set var="sum2" value="<%= num3 + num4 %>"/>
num3 + num4 = ${sum2}
=> num3 + num4 = 30
- 배열 또는 컬렉션으로 사용할 문자열 선언
(1) 태그 내부에 벨류 값 입력
<c:set var="colors">
red, yellow, green, orange, blue, megenta
</c:set>
화면 출력
color 배열 값 확인 : ${ colors }
=> color 배열 값 확인 : red, yellow, green, orange, blue, megenta
(2) 자바스크립트에서 EL 사용
<script>
window.onload = function(){
let colors = '${ colors }'.split(",");
console.log(colors);
}
</script>
2 . <c:remove>
: 변수 삭제 기능 태그
변수 선언
<c:set var="num1" value="100" scope="session"/>
<c:set var="num2" value="200" scope="session"/>
화면 출력
num1 변수 값 : ${ num1 }
num2 변수 값 : ${ num2 }
=> num1 변수 값 : 100
num2 변수 값 : 200
변수 삭제
<c:remove var="num1" scope="session"/>
화면 출력
num1 변수 값 : ${ num1 }
=> num1 변수 값 :
scope 미지정시 모든 scope의 동일 이름의 변수 제거
<c:remove var="num2"/>
화면 출력
num2 변수 값 : ${ num2 }
=> num2 변수 값 :
3. <c:out>
: 값을 출력할 때 사용하는 태그
<, >, & 특수 문자를 자동으로 이스케이프 시뭔스로 바꿔 줌
출력할 데이터에 포함된 특수 문자를 태그의 일부로 인식시키고 싶을 경우
escapeXml을 false로 지정
<c:out value="<h2>데이터 출력</h2>" escapeXml="false"/><br>
=> 데이터 출력
true로 지정하면 문자로 인식
<c:out value="<h2>데이터 출력</h2>" escapeXml="true"/><br>
=> <h2>데이터 출력<h2>
웹 브라우저가 해석하지 않고 기술한 대로 화면에 나타남
기본 값은 true임
<c:out value="<h2>데이터 출력</h2>"/>
=> <h2>데이터 출력<h2>
EL로 가져오는 값이 없는 경우 대체할 값 설정
<c:out value="${ param.name }" default="아무개님"/>
=> 아무개님
4. <c:if>
: 조건식 태그
test 속성에 조건식을 기술
조건식은 반드시 EL 형식으로 기술
변수 선언
<c:set var="value1" value="9" scope="page"/>
<c:set var="value2" value="3" scope="page"/>
<c:if test="${ value1 >= value2 }">
<h3>value1이 큽니다 : ${ value1 }</h3>
</c:if>
=> value1이 큽니다 : 9
<c:if test="${ value1 < value2 }">
<h3>value2이 큽니다 : ${ value2 }</h3>
</c:if>
=> test 결과가 false이기 때문에 화면에 보여지지 않음
5. <c:choose>
: 자바의 switch 문과 비슷한 역할
<c:when>, <c:oterwise> 태그와 함께 사용
변수 선언
<c:set var="no" value="${ param.no }"/>
<c:choose>
<c:when test="${ no == 1 }"> switch의 case
<h3>안녕하세요</h3>
</c:when>
<c:when test="${ no eq 2 }">
<h3>반갑습니다.</h3>
</c:when>
<c:otherwise> switch의 default
<h3>환영합니다.</h3>
</c:otherwise>
</c:choose>
=> http://localhost:8000/chap13/views/jstl/testJstlCore?no=1 이면 안녕하세요 출력
http://localhost:8000/chap13/views/jstl/testJstlCore?no=2 이면 반갑습니다 출력
아무 조건도 만족하지 못할 경우 환영합니다 출력
6.<c:forEach>
: 자바의 for, for-in문에 해당하는 기능을 제공
속성 | 기능 |
items | 반복할 객체 명(Collection 객체) |
begin | 반복이 시작할 요소 번호 |
end | 반복이 끝나는 요소 번호 |
step | 증가값 |
var | 현재 반복 횟수에 해당하는 변수의 이름 |
varState | 현재 반복에 해당하는 객체의 요소 |
- <c:forEach> 사용
<c:forEach begin="1" end="3">
반복 실행
</c:forEach>
=> 반복 실행
반복 실행
반복 실행
- 변수를 다루고 싶을 때
<c:forEach var="size" begin="1" end="7" step="2">
<font size="${ size }"> 글자크기 ${ size }</font>
</c:forEach>
- 배열 또는 컬렉션 연속 처리에 for-each문처럼 사용
: varStatus를 통해 상태를 관리
current (현재 요소), index (제로 기반 인덱스), count (1 기반 인덱스)
<c:forEach var="color" items="${ colors }" varStatus="st">
<font color="${ color }">
${ st.count } : 글자색 ${ color }<br>
${ st.index }, ${ st.current }<br>
</font>
</c:forEach>
7. <c:forTokens>
: 문자열을 토큰으로 분리 처리 할 때 사용
items 속성에는 토큰을 포함하는 문자열 지정
dleims 속성에는 토큰을 분리하는데 사용할 구획 문자 기술
<ul>
<c:forTokens items="yellow blue pink red green" delims=" " var="color">
<li>${ color }</li>
</c:forTokens>
</ul>
여러 개의 토큰 문자를 가지고 분리 처리 할 수도 있다
<ul>
<c:forTokens items="yellow-blue*pink/red green" delims="/*- " var="color">
<li>${ color }</li>
</c:forTokens>
</ul>
8.<c:url >
: url 경로를 생성하고 해당 url의 param 속성을 선언하여 쿼리스트링을 정의 할 수 있음
해당 태그를 통행 url 경로와 관련 쿼리스트링의 값을 미리 설정하여 이를 제어할 수 있음
값을 링크로 넣음
<c:url var="fmtlink" value="testJstlCorResult.jsp">
링크에 대한 파라미터 설정
<c:param name="num" value="77"/>
</c:url>
<a href="${ fmtlink }"> 결과 화면 연결~</a>
'프로그래밍 > Servlet&JPS' 카테고리의 다른 글
11 Servelt & JSP : JSP Action Tag _ 표준 액션 태그 (0) | 2022.08.25 |
---|---|
10 Servlet & JSP : EL 표현식 (0) | 2022.08.25 |
09 Servlet / JSP : JSP 특징과 JSP Element 표기법 (0) | 2022.08.24 |
08 Servlet : listener (0) | 2022.08.24 |
07 Servlet : Filter (0) | 2022.08.24 |