자바의 JSTL 사용예

▩ 표현 언어(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통

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다