본문 바로가기

Programming/JSTL

JSTL Core

코어태그의 구분

 ① 범위 변수를 생성하고 초기화하는 기능을 지원하는 태그

 ② 흐름을 제어할 수 있는 태그

 ③ 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로 지정하면 < > & ' " 문자들이 각각 &lt; $gt; &amp; &#033; &#034;로 출력

 기본값 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://mrtint.tistory.com/335

http://sinpk.tistory.com/entry/JSP-JSTL-CORE


'Programming > JSTL' 카테고리의 다른 글

JSTL  (1) 2013.10.18