관리 메뉴

I LOVE EJ

JSTL 사용법 본문

Web Development/JSP

JSTL 사용법

BeOne 2008. 4. 4. 12:09

▩ 표현 언어(Expression Language)
   - JSTL1.0규약에 소개되었고 JSP2.0에 새롭게 추가되었습니다. (JSP 2.0은 JSTL 1.1버전에 소개된 내용을 기준으로 제공합니다.)
   - 표현식(<%%>)보다 사용법이 간단합니다.
   - 실습을 위해서 Tomcat 5.0.X이상, Resin 3.0.X이상 설치 하세요.
   - JSP의 4가지 기본 객체가 제공하는 영역의 속성 사용
   - 집합 객체 지원, 수치, 관계, 논리 연산 제공, 자바 클래스 메소드 호출 기능 제공, 표현 언어만의 기본 객체 제공
   - 표현 방법 ${expr}
   - 값이 없는 경우 "null"값을 출력하지 않습니다.
   - EL은 모두 11개의 객체를 지원합니다.
   - 기본적으로 자바의 문법이 적용됩니다.  
   - 만약 EL이 인식이 안되면 페이지 상단에 <%@ page isELIgnored="false"%> 를 선언해야 EL을 사용할 수 있습니다.
     <%@ page isELIgnored="false" contentType = "text/html; charset=euc-kr" %>


1. EL객체의 사용예
   - 실습용 폴더
     . D:/tomcat-5.0.19/webapps/ejb1000/el
     . D:/tomcat-5.0.19/webapps/ejb1000/WEB-INF
     . D:/tomcat-5.0.19/webapps/ejb1000/WEB-INF/classes

   - http://127.0.0.1:8081/ejb1000/el/useELObject.jsp
   - http://127.0.0.1:8081/ejb1000/el/useELObject.jsp?code=A0001

>>>>> useELObject.jsp
<%@ page isELIgnored="false" contentType = "text/html; charset=euc-kr" %>
<%
    request.setAttribute("name", "왕눈이");
%>
<html>
<head><title>EL Object</title></head>
<body>

요청 URI: ${pageContext.request.requestURI} <br>
request의 name 속성: ${requestScope.name} <br>
code 파라미터: ${param.code} <br>

</body>
</html>




▩ JSTL(JSP Standard TAG Library)의 사용
   - JSTL은 계속적으로 사용이 증가되고 있는 추세입니다.
   - 많이 사용되는 사용자 정의 태그를 모아서 JSTL이라는 규약이 만들어졌습니다. 
   - 스크립틀릿, 표현식을 사용하는 것보다 훨씬 간결한 문법 구조를 지원합니다.
   - JSTL은 5가지의 태그를 지원합니다.
     라이브러리    기능                                 접두어    관련 URL
     -----------------------------------------------------------------------------------------------
     Core          변수지원, 흐름 제어, URL 처리        c         http://java.sun.com/jsp/jstl/core
     XML           XML 코어, 흐름 제어, XML 변환        x         http://java.sun.com/jsp/jstl/xml
     국제화        지역, 메시지 형식, 숫자 및 날짜 형식 fmt       http://java.sun.com/jsp/jstl/fmt
     데이터베이스  SQL                                  sql       http://java.sun.com/jsp/jstl/sql
     함수          콜렉션 처리, String 처리             fn        http://java.sun.com/jsp/jstl/functions



1. 설치
   - http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html
     . Standard Taglib nightly snapshot에서 "jakarta-taglibs-standard-20051220.zip"파일을 다운합니다.

   - 압축을 해제한 후 "F:\JAVA\jstl\jakarta-taglibs-standard-20050804\jakarta-taglibs\standard\lib"폴더안에 있는
     'jstl.jar', 'standard.jar'파일을 "D:\tomcat-5.0.19\common\lib" 또는 "C:\tomcat-5.0.19\webapps\ejb1830\WEB-INF\lib"폴더로
     복사합니다.
     . Resin은 'C:\ojt\resin-3.0.14\lib'폴더에 같다 붙입니다.

   - 실습용 폴더
     . D:/tomcat-5.0.19/webapps/ejb1000/jstl




▩ Core Tag

기능        태그명     기능설명
---------------------------------------------------------------------------
변수 지원   set        jsp에서 사용될 변수를 설정합니다.
            remove     설정한 변수를 제거합니다.
---------------------------------------------------------------------------
흐름 제어   if         조건에 따라 내부 코드를 수행합니다.
            choose     다중 조건을 처리할 때 사용됩니다.
            forEach    Collection의 각 항목을 처리할 때 사용합니다.
            forTokens  구분자로 분리된 각각의 토큰을 처리할 때 사용합니다.
---------------------------------------------------------------------------
URL 처리    import     URL을 사용하여 다른 자원의 결과를 삽입합니다.
            redirect   지정한 경로로 이동합니다.
            url        URL을 재 작성합니다.
---------------------------------------------------------------------------
기타 태그   catch      예외 처리에 사용합니다.
            out        jspWriter에 내용을 알맞게 처리한 후 출력합니다.
---------------------------------------------------------------------------




▩ EL & JSTL의 사용 - Core Tag: 변수 지원 태그의 사용

1. 변수지원 태그, http://127.0.0.1:8081/ejb1000/jstl/setTag.jsp
<%@ page isELIgnored="false" contentType = "text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="num1" value="${20}" />

<c:set var="num2">
10.5
</c:set>

<%
java.util.Date dt = new java.util.Date();
%>
<c:set var="today" value="<%=dt.toLocaleString()%>" />

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
    <title>set 태그와 remove 태그</title>
</head>
<body>
<H2>
변수 num1 = ${num1} <br>
변수 num2 = ${num2} <br>
num1 + num2 = ${num1 + num2} <br>
오늘은 ${today} 입니다.

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

<p>
삭제한 후의 num1 = ${num1} <br>
삭제한 후의 num1 + num2 = ${num1 + num2}
</H2>
</body>
</html>




2. Map 객체의 사용, http://127.0.0.1:8081/ejb1830/jstl/setTag2.jsp
<%@ page isELIgnored="false" contentType = "text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="map" value="<%= new java.util.HashMap() %>" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
    <title>set 태그와 remove 태그</title>
</head>
<body>
<c:set target="${map}" property="name" value="왕눈이" />
<c:set target="${map}" property="aromi" value="아로미" />
<h2>
변수 map에 저장된 name 값: ${map.name}<br>
변수 map에 저장된 name 값: ${map.aromi}
</h2>
</body>
</html>





▩ EL & JSTL의 사용 - Core Tag: 흐름 제어 태그의 사용

1. if 흐름제어 태그의 사용
   - http://127.0.0.1:8081/ejb1830/jstl/ifTag.jsp
   - http://127.0.0.1:8081/ejb1830/jstl/ifTag.jsp?name=tree
   - http://127.0.0.1:8081/ejb1830/jstl/ifTag.jsp?name=tree&age=25
   - test는 변경할 수없습니다.
   - 한글은 비교가 안됩니다.


>>>>> ifTag.jsp
<%@ page isELIgnored="false" contentType = "text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>if 태그</title></head>
<body>
<c:if test="true">
무조건 수행<br>
</c:if>

<c:if test="${param.name == 'tree'}">
name 파라미터의 값이 ${param.name} 입니다.<br>
</c:if>

<c:if test="${18 < param.age}">
당신의 나이는 18세 이상입니다.
</c:if>
</body>
</html>




2. choose Tag
   - when tag는 조건이 true이면 실행합니다.
   - http://127.0.0.1:8081/ejb1830/jstl/chooseTag.jsp
   - http://127.0.0.1:8081/ejb1830/jstl/chooseTag.jsp?name=tree
   - http://127.0.0.1:8081/ejb1830/jstl/chooseTag.jsp?age=25

<%@ page isELIgnored="false" contentType = "text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>choose 태그</title></head>
<body>

<ul>
<c:choose>
  <c:when test="${param.name == 'tree'}" >
    <li> 당신의 이름은 ${param.name} 입니다.
  </c:when>
  <c:when test="${param.age > 18}" >
    <li> 당신은 18세 이상입니다.
  </c:when>
  <c:otherwise>
    <li> 당신은 'bk'가 아니고 18세 이상이 아닙니다.
  </c:otherwise>
</c:choose>
</ul>

</body>
</html>




3. forEach 태그
   - Collection, Map에 저장되어 있는 값에 순차적으로 접근시에 사용합니다.
   - http://127.0.0.1:8081/ejb1830/jstl/forEachTag.jsp

<%@ page isELIgnored="false" contentType = "text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
    java.util.HashMap mapData = new java.util.HashMap();
    mapData.put("name", "아로미");
    mapData.put("today", new java.util.Date());
%>
<c:set var="intArray" value="<%= new int[] {1,2,3,4,5} %>" />
<c:set var="map" value="<%= mapData %>" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>forEach 태그</title></head>
<body>
<h4>1부터 100까지 홀수의 합</h4>
<c:set var="sum" value="0" />
<c:forEach var="i" begin="1" end="100" step="2">
<c:set var="sum" value="${sum + i}" />
</c:forEach>
결과 = ${sum}

<h4>구구단: 4단</h4>
<ul>
<c:forEach var="i" begin="1" end="9">
   <li>4 * ${i} = ${4 * i}
</c:forEach>
</ul>

<h4>int형 배열</h4>

<c:forEach var="i" items="${intArray}" begin="2" end="4">
    [${i}]
</c:forEach>

<h4>Map</h4>

<c:forEach var="i" items="${map}">
    ${i.key} = ${i.value}<br>
</c:forEach>

</body>
</html>




4. forTokens Tag
   - http://127.0.0.1:8081/ejb1830/jstl/forTokensTag.jsp

<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head><title>forTokens 태그</title></head>
<body>

콤마와 점을 구분자로 사용:<br>
<c:forTokens var="token"
             items="빨강색,주황색.노란색.초록색,파랑색,남색.보라색"
             delims=",.">
${token}
</c:forTokens>

</body>
</html>

출처 : Tong - kangdydtjs님의 Custom Tag Library통

'Web Development > JSP' 카테고리의 다른 글

Redirect 처리 방법(ASP/JSP/PHP)  (0) 2008.06.13
오늘 날짜 구하기(JAVA & JSP&JAVASCRIPT)  (0) 2008.06.11
JSTL 함수  (0) 2008.04.04
JSTL(JSP Tag Library) 개요  (0) 2008.04.04
JSTL 정리문서  (0) 2008.04.04