2013년 3월 14일 목요일

[JSP] JSTL

JSTL은 유용한 커스텀 액션을 포함하고 있는 라이브러리이며, 이 라이브러리를 통한 액션 태그를 사용하여 JSP에 스크립틀릿과 같은 자바코드를 줄일 수 있다.

JSTL을 가지고 변수를 선언하고 if문, for문 등의 간단한 로직을 구현할 수 있으며 다른 JSP페이지를 호출하고 날짜, 시간, 숫자의 포맷을 변경할 수도 있다.

JSTL을 구성하는 라이브러리들이 몇몇 존재하는데 여기서는 코어와 포메팅 라이브러리에 대해 알아보도록하자. 우선 JSTL을 jakarta.apache.org에 접속하여 라이브러리를 받도록하자. 내려받은 파일은 톰켓에 lib폴더에 넣어주자. 그리고 taglib 지시자로 태그를 사용할 수 있도록 설정해야한다.
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

이렇게하여 커스텀 액션 태그가 추가되었다. 그럼 커스텀 태그의 사용에 대해 알아보자.
<c:set>
- 변수를 선언하고 변수에 초기값을 대입하는 기능의 커스텀 액션
예) <c:set var="result" value="100"></c:set>

또는 <c:set var="result" value="${num}></c:set>처럼 EL문을 사용할 수도 있다. 또한 이 태그의 속성값인 scope를 통해 네 가지의 내장객체에 어트리뷰트를 저장하는 것이 가능하다는 것을 잘 알고 있도록 하자.

<c:if>
- 프로그램의 if문과 비슷한 역할
예) <c:if test="${num1>num2}">

이렇게함으로써 num1과 num2의 조건관계를 알아볼 수 있다.

<c:choose>
- 프로그램에서 switch의 역할과 비슷하다.
예)
<c:chooes>
    <c:when test="${num==0}">
        Hello JSP<br>
    </c:when>
    <c:otherwise>
        Bye<br>
    </c:otherwise>

<c:forEach>
- 프로그램의 for문
예 1.) <c:forEach begin="0" end="10">
              Hello JSP<br>
        </c:forEach>

기본적으로 0부터 10까지 증가가 1씩되면서 Hello JSP를 10번 출력한다. 증가의 수를 변경하고 싶다면 속성 step에 수를 입력하면 된다.(step="2")

예 2.) <c:forEach var="i" items="${arr}">
             ${i}<br>
         </c:forEach>

데이터를 여러개 담고 있는 컬렉션을 하나씩 돌려 저장된 객체를 리턴시켜 줄 수 있다.
그 종류는 배열뿐만 컬렉션 아니라 arraylist, map, iterator, enumeration객체들과 콤마로 구분된 항목을의 문자열을 의미한다.

<c:forTokens>
- 자바의 StringTokenizer와 for문이 합쳐진 것과 같다.
예) <c:set var="guests" value="토끼^^거북아~사슴"/>
      <c:forTokens var="animal" items="${guests}" delims="^~">
          ${animal}<br>
      </c:forTokens>

<c:redirect>
-response.senRedirect()와 같다
예) <c:redirect url="http://~~"/>

댓글 없음:

댓글 쓰기