본문 바로가기

프로그래밍/JSP

JSP에서 JSTL 사용





core태그 중에서 유용한 것들, 모든 내용을 보고 싶다면 JSTL 매뉴얼 참조(페이지 하단)



<c:out>

단순히 내용을 출력하는 기능.


<c:out value="${users.id}" default="아이디" />


${users.id}이 null일 경우 dafault에 있는 값으로 대체.



<c:set>

저장객체의 setAttriubte 기능.


<c:set var="addr" value="myaddr" scope="session" /> 

<c:set var="no" value="${member.age+1}"  /> 

첫번째는 session 에 addr 이란이름으로 myaddr 스트링을 저장.

두번째는 no 이란이름으로 member.age+1으로 산술연산된 값을 저장, scope를 생략하면 기본으로 page에 저장.



<c:remove>

 removeAttribute의 기능.


 <c:remove var="no" scope="page" />


 지정된 scope의 no란 이름이 attribute를 remove. scope를 생략할 경우 모든 범위의 attribute가 삭제



<c:if>

 if 조건문을 사용한다. 단 else if 와 else는 지원하진 않고 유사한 <c:choose> 가 존재한다


<c:if test="${users.age < 20}" var="result" scope="page">

아직 어려요~

</c:if>

<c:if test="${!empty list}" >

없어요

</c:if>


test에서 조건을 검사하고 true 일 경우에만 <c:if>태그안의 내용 출력. 

여기서 EL의 연산자 사용 가능. [JSTL 연산자 참고]


var는 조건을 검사하고 리턴되는 boolean값을 저장하는 attribute이름, 

scope는 var가 저장되는 범위. scope가 없을시 기본값은 page.



<c:choose> 

if, else if, else 와 유사.


<c:choose> 태그안에는 <c:when> 과 <c:otherwise>가 사용.

<c:choose> 

<c:when test="${vo.type==1}"> 

    <img src="<%=cp%>/images/type1.jpg" /> 

</c:when> 

<c:when test="${vo.type==2}"> 

    <img src="<%=cp%>/images/type2.jpg" /> 

</c:when> 

<c:when test="${vo.type==0 or vo.type==3}"> 

    <img src="<%=cp%>/images/type_ment.jpg" /> 

</c:when> 

<c:otherwise> 

    <img src="<%=cp%>/images/type_heart.jpg" /> 

</c:otherwise> 

</c:choose>


<c:choose>안에서 순서대로 <c:when> 의 조건문을 검사해 true가 나오면 

해당 <c:when> 태그안에 내용을 보여주고 <c:choose>문은 끝난다.


만약 모든 <c:when>의 조건문이 false일 경우 <c:otherwise>안에 내용 출력.



<c:forEach>

Collection을 반복. 게시판 같은 반복적인 처리를 할때 매우 유용.


지원되는 컬렉션을 다음과 같다.

Arrays ( 배열 )

java.util.Collection

java.util.Iterator

java.util.Enumeration

java.util.Map


<table>

<c:forEach items="${list}"  var="notice"  varStatus="status">

<tr>

    <td>${status.count}</td>

    <td>${notice.title}</td>

    <td>${notice.writer}</td>

    <td>${notice.wdate}</td>

    <td>${notice.readcount}</td>

</tr>

</c:forEach>

</table> 


items는 Collection 객체. 

var는 Collection에서 객체를 하나씩 가져올때마다 담는 객체.

그 객체가 Beans일 경우 Beans클래스를 자동으로 찾아 담는다.

varStatus는 일련의 속성들을 정의한 객체다 ( javax.servlet.jsp.jstl.core.LoopTagStatus )



다음은 일반적은 for문 처럼 사용한 예.


<c:forEach var="x" begin="0" end="10" step="2">

${x},

${x*x}

</c:forEach>



<c:forTokens>

<c:forEach> 와 같이 반복 태그로 이것은 StringTokenizer 클래스를 이용.

사용할 일이 드물다.

구분자( delims ) 를 공백, 쉼표, 마침표 로 한 예.


<c:forTokens items="${param.text}" delims=" ,." var="word" begin="1" end="10" step="1" >

    ${word}

</c:forTokens>





JSTL 매뉴얼 -  http://pds17.egloos.com/pds/201002/12/66/JSTL-Reference-11.pdf