코어태그의 구분
① 범위 변수를 생성하고 초기화하는 기능을 지원하는 태그
② 흐름을 제어할 수 있는 태그
③ URL 처리를 위한 태그
④ 예외 처리 태그
⑤ 출력태그
기능 |
태그 |
설명 |
표현 언어 지원 |
out |
표현식인 <%= %>를 대체 JspWriter에 데이터를 출력할 때 사용하는 태그 |
set |
변수에 값을 설정 |
|
remove |
변수에 설정된 값을 제거 |
|
catch |
예외 처리 시 사용 |
|
흐름 제어 |
if |
조건에 따라 처리를 달리 할 때 사용 |
choose |
여러 조건에 따라 처리를 달리 할 때 사용 |
|
forEach |
반복 처리를 위하여 사용 |
|
fortokens |
구분자로 분리된 각각의 토큰을 처리 할 때 사용 |
|
URL 관리 |
import |
외부의 자원을 urf를 지정하여 가져다 사용 |
redirect |
지정한 경로로 이동 |
|
url |
url을 재 작성한다. |
표현 언어를 지원 태그
① <c:out>
<c:out>은 JSP의 표현식 <%= %>를 대체하는 데이터를 출력할 때 사용하는 태그이다.
형식
<c:out value="출력값" escapeXml="true | false" default=기본값" />
속 성 |
설 명 |
value |
JspWriter에 출력할 값을 지정 |
escapeXml |
true로 지정하면 < > & ' " 문자들이 각각 < $gt; & ! "로 출력 기본값 true, 생략 가능 |
default |
지정한 값이 없을 경우 출력할 값을 지정, 생략 가능 |
사용 예제
<c:out value = "${age}" default = "${10}" />
<c:out value = "${age}">10</c:out> (default의 경우 이와 같이 표현이 가능하다.)
> 변수 age에 저장한 값을 출력하되, 지정된 값이 없을 경우 10을 출력
② <c:set>
<c:set/> 태그는 JSP의 setAttribute()와 같은 역할
해당 범위의 변수를 생성하고 속성값을 정하는데 사용
지정된 변수가 이미 존재한다면 지정한 값이 할당
존재하지 않는다면 범위 변수가 새롭게 만들어지고 그 값으로 초기화 된다.
형식
<c:set var = "변수명" value = "설정값" target="객체" property="값" scope = "범위" />
속 성 | 설 명 |
var | 값을 지정할 변수의 이름 |
value | 변수에 저장할 값 |
target | 값을 설정할 Property에 대한 객체 |
property | 값을 설정할 객체의 Property |
scope | 변수의 유효 범위 설정 {page | request | session | application} , 기본값 page |
사용 예제
<c:set var = "age" value = "${'30}"/>
> 변수 age에 30의 값을 지정
<c:set var = "age" value = "<%=user.getAge() %>" />
> 변수 age에 user 객체의 age값을 호출하여 지정
<c:set target = "${user} property = "age"> 30 </c:set>
> user 객체의 age 속성 값을 30으로 지정
③ <c:remove>
<c:remove> 태그는 JSP의 removeAttribute()와 같은 역할
해당 범위에 정의 된 변수 제거
var속성이 같으나 scope 속성이 다르면 다른 변수로 인식하여 제거되지 않음
형식
<c:remove var = "변수명" scope = "범위" />
사용 예제
<c:remove var = "age" scope = "page" />
> 변수 age를 제거한다.
④ <c:catch>
예외 처리를 하기 위하여 사용
사용 예제
<c:catch var="errmsg">
<%=1/0%>
</c:catch>
<c:out value="${errmsg}" />
> 1/0 실행 시 발생하는 Exception을 errmsg에 지정하여 c:out 태그를 이용하여 출력
흐름 제어 태그
① <c:if>
<c:if/> 태그는 자바의 if 문과 비슷한 기능을 제공하나 else문은 지원하지 않는다.
형식
<c:if test="조건" var="변수명" scope="범위" />
속 성 | 설 명 |
test | 조건 판별식 기술 |
var | test에 설정한 조건의 결과 값을 저장하는 변수 명 |
scope | 변수의 유효 범위 설정 {page | request | session | application} , 기본값 page |
사용 예제
<c:if test="${country != null}">
국가명 : <c:out value="${country}" />
</c:if>
> country 값이 null 이 아니면 country 값을 출력
② <c:choose> <c:when> <c:otherwise>
<c:when>, <c:otherwise>는 <c:choose>의 서브 태그이다.
<c:choose>는 하나 이상의 <c:when>과 하나의 <c:otherwise> 서브 태그를 가진다.
형식
<c:choose>
<c:when test="조건"> true </c:when>
<c:otherwise> false </c:otherwise>
</c:choose>
> 조건이 True라면 true를 출력하고, 그렇지 않을 경우 false를 출력
③ <c:forEach>
<c:forEach>는 배열이나 Collection 또는 Map에 저장되어 있는 값 들을 순차적으로 처리할 때 사용할 수 있는 태그
items 속성에 올 수 있는 것들로는 Map, 배열, Collection 이 있다.
<c:forEach>는 자바의 for문과 같이 지정한 횟수만큼 반복하는 용도로 쓸 수 있다.
형식
<c:forEach items="객체명" begin="시작" end="끝" step="증감" var="변수명" varStatus="상태변수">
내용
</c:forEach>
속 성 | 설 명 |
items | 속성에 컬렉션이나 배열 형태를 지정하여 객체의 인덱스 만큼 반복 가능 |
begin | 시작 인덱스 |
end | 끌 인덱스 |
step | 증감식 설정 |
var | 반복 중일 경우 현재 반복하는 값을 기억하는 변수 |
varStatus | 반복의 상태를 갖게 하는 변수 |
사용 예제
<c:forEach var="i" items="${member}" begin="0" end="5" varStatus="status">
index : ${status.index}
count : ${status.count}
name : ${i.name}
phone : ${i.phone}
</c:forEach>
> member 리스트를 0부터 5까지 반복하면서 각 반복의 index, count 값과 member에 저장된 name, phone 정보를출력
<c:forEach var="i" begin="0" end="10" step="2">
${I}
</c:forEach>
> 0부터 10까지 2씩 증가를 반복하며 홀수를 출력
④ <c:forTokens>
java.util.Stringtokenizer를 이용하는 것과 같다.
형식
<c:forTokens items="객체명" delims="구분자" var="변수명" vatStatus="상태변수" begin="시작" end="끝" step="증감">
내용
</c:forTokens>
속 성 | 설 명 |
items | 속성에 컬렉션이나 배열 형태를 지정하여 객체의 인덱스 또는 구분자로 나누어진 만큼 반복 가능 |
delims | 구분자 |
begin | 시작 인덱스 |
end | 끌 인덱스 |
step | 증감식 설정 |
var | 반복 중일 경우 현재 반복하는 값을 기억하는 변수 |
varStatus | 반복의 상태를 갖게 하는 변수 |
사용 예제
<c:forTokens items="123-456-789" delims="-" var="sel">
${sel}
</c:forTokens>
> -를 기준으로 items의 값을 구분하여 출력
<c:forTokens var="num" items="하나,둘,셋|넷|다섯,여섯" delims=",|" varStatus="sts">
<c:out value="${sts.count>:${num}"/>
</c:forTokens>
> ,와 |를 기준으로 items의 값을 구분하여 각각의 count 값과 items의 값을 하나씩 출력
> 1:하나 2:둘 3:셋 4:넷 5:다섯 6:여섯
Url 관리 태그
① <c:import>
jsp의 include와 동일한 역활
읽어온 데이터가 변수에 저장되기 때문에 쉽게 원하는 형태로 편집이 가능
웹 어플리케이션 내부의 자원 접근은 물론이고, http, ftp 같은 외부의 자원도 가져와 페이지에 귀속시킬 수 있다.
해당 주소의 컨텐츠 reader 객체로 읽어 올 수 있다.
<jsp:include> 와의 차이점
<jsp:include> 액션 태그는 현재 위치에 무조건 결과를 출력하는 반면, <c:import>태그는 EL변수에 보관 뒤 필요에 따라 알맞은 처리를 할 수 있다.
형식
<c:import url="읽어올 URL" var="변수명" context="컨텍스명" scope="범위" charEncoding="캐릭터 셋">
<c:param>
</c:import>
<c:import url="읽어올 URL" context="컨텍스명" varReader="객체" scope="범위" charEncoding="캐릭터 셋">
varReader를 사용하는 액션
</c:import>
속 성 | 설 명 |
url | 읽어올 URL |
var | 읽어올 데이터를 저장할 변수 명 |
context | URL 접근 시 컨텍스의 이름 |
scope | 변수의 공유 범위. |
charEncoding | 읽어온 데이터의 캐릭터셋 지정 |
varReader | 리소스의 내용을 Reader 객체로 읽어올 때 사용 |
사용 예제
<c:import url="http://www.naver.com" var="naver" scope="page" charEncoding="utf-8">
<c:out value="${naver}" />
</c:import>
> www.naver.com 페이지를 naver 변수에 utf-8 형식으로 담아 놓고, 사용하고자 하는 위치에 해당 페이지를 호출
② <c:url>
주소(URL)를 자동으로 생성하여 변수에 저장
형식
<c:url var="URL명" value="생성된 URL" context="컨텍스명" scope="범위" />
속 성 | 설 명 |
var | 생성한 URL이 저장될 변수명 |
value | 생성할 URL |
context | URL 접근 시 컨텍스의 이름 |
scope | 변수의 공유 범위. |
③ <c:redirect>
다른 페이지로 이동 시 사용
형식
<c:redirect url="url" context="컨텍스명" />
참조 : http://tazz009.tistory.com/484
http://ihayatesw.tistory.com/155
http://sinpk.tistory.com/entry/JSP-JSTL-CORE
'Programming > JSTL' 카테고리의 다른 글
JSTL (1) | 2013.10.18 |
---|