반응형
반응형
반응형

JSTL 조건식 사용할 때..


// eq

// - ==
<c:if test="${name eq '이름'}">

<c:if test="${name eq null}">

<c:if test="${age eq 20}">


// ne

// - !=

<c:if test="${name ne '이름'}">

<c:if test="${name ne null}">

<c:if test="${age ne 20}">


// empty

// - null, 빈 문자열, 빈 배열, 빈컬렉션 검사

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

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

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

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



반응형
반응형

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

${fn:length(group.value) }

${fn:substring(str, 0, 10) }

 

<fmt:parseNumber var="res" value="${a%b}" integerOnly="true" />

 

<c:forEach var="val" items="${list}" varStatus="stat">
${capaStatus.index} 0 부터 시작.
${capaStatus.count} 1 부터 시작.

반응형

'프로그래밍 > Java' 카테고리의 다른 글

[xml] xml parsing - SAXParseException  (0) 2009.03.13
inputStream <-> String  (0) 2009.03.03
JSTL  (0) 2009.02.18
[이클립스] JVM 메모리 용량 세팅  (0) 2009.02.11
[JSTL] 사용법  (0) 2009.02.11
반응형


설정#

web.xml

<taglib>
     <taglib-uri>jstl-c</taglib-uri>
     <taglib-location>/WEB-INF/tlds/jstl/c.tld</taglib-location>
</taglib>
<taglib>
     <taglib-uri>jstl-fmt</taglib-uri>
     <taglib-location>/WEB-INF/tlds/jstl/fmt.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>jstl-fn</taglib-uri>
    <taglib-location>/WEB-INF/tlds/jstl/fn.tld</taglib-location>
</taglib>

 

jsp 에서

<%@ taglib uri="jstl-c" prefix="c" %>

<%@ taglib uri="jstl-fmt" prefix="fmt" %>

<%@ taglib uri="jstl-fn" prefix="fn" %>

 

EL#
  1. 생존범위 속성 맵

    1. pageScope 
    2. requestScope 
    3. sessionScope 
    4. applicationScope 
  2. 요청 파라미터 맵 

    1. param 
    2. paramValues 
  3. 요청 헤더 맵 

    1. header 
    2. headerValues 
  4. 쿠키 맵 

    1. cookie 
  5. 컨텍스트 초기화 파라미터 맵(서블릿 초기화 파라미터 아님) 

    1. initParam 
  6. 실제 pageContext 객체에 대한 참조. 이것은 빈임

    1. pageContext

      1. pageContext 접근자

        1. getErrorData() 
        2. getPage() 
        3. getRequest() 
        4. getResponse() 
        5. getServletConfig)() 
        6. getServletContext() 
        7. getSession() 
      2. JspContext로 부터 상속받은 접근자

        1. getAttribute() 
        2. getAttributeNamesInScope() 
        3. getAttributesScope()
        4. getExpressionEvaluator() 
        5. getOut() 
        6. getVariableResolver() 



스크립팅

  1. <$= request.getHeader("host") %>

EL 내장 객체

  1. ${header["host"]}
  2. ${header.host}
  3. ${headerValues.host[]}


스크립팅

  1. <%= request.getMethod() %>

EL 내장 객체

  1.  ${pageContext.request.method}


core#

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

  • 일반적인 것 

    • <c:out> 
    • <c:set> 
    • <c:remove> 
    • <c:catch> 
  • 조건

    • <c:if> 
    • <c:choose> 
    • <c:when> 
    • <c:otherwise> 
  • URL 관련

    • <c:import> 
    • <c:url> 
    • <c:redirect> 
    • <c:param> 
  • 반복

    • <c:forEach> 
    • <c:forEachToken> 



① set
     - JSP의 setAttribute()와 같은 역활
     - 기본형
       <c:set   var="변수명"
                    value="변수명에 할당된 값"
                    target="자바빈 객체명이나 Map 객체명"
                    property="자바빈 객체나 Map 객체의 값을 설정할 프로퍼티 명"
                    scope="변수의 공유 범위(유효기간)으로 page|request|session|application" />
     - 예제
          <c:set var="country" value="${'Korea'}" />
          <c:set var="intArray" value="<%=new int[] {1,2,3,4,5}%>" />
          <c:set var="sum" value="${sum+i}" />
 
② out
     - JSP의 표현식을 대체하는 것으로 많이 사용됨
     - 기본형
          <c:out var="변수명"
                    default="기본값"
                    escapeXML="true|false" />
 
     * escapeXML
     > 생략시 기본값은 true
     > true일 경우 값 중에 포함된 <>&'" 문자들을 각각 &lt;, &gt;, &amp;, &#039;, &#034;로 출력

     - 예제
          <c:out value="${sum}" />
          <c:out value="${val}" />
 
③ remove
     - JSP의 removeAttribute()와 같은 역활
     - 기본형
          <c:remove var="변수명"
                              scope="변수의 공유 범위로 page(생략 시 기본)|request|session|application" />
     - 예제
          <c:remove var="browser" />
 
④ catch
     - body 위치에서 실행되는 코드의 예외를 잡아내는 역할
     - 기본형
          <c:catch var="에러가 발생할 때 에러 메세지가 포함될 변수명" />
     - 예제
          <c:catch var="errmsg">
               line 1~
               <%=1/0%>
               line 2~
          </c:catch>
          <c:out value="${errmsg}" />
 
⑤ if
     - 조건문에 사용
     - 기본형
          <c:if   test="조건 판별식"
                    var="변수명"
                    scope="변수의 공유범위 page|request|session|application"
     - 예제
          <c:if test="${country != null}">
               국가명 : <c:out value="${country}" />
          </c:if>
 
⑥ choose
     - 자바의 switch문과 동일
     - 조건에서 문자열 비교가 가능
     - 하나 이상의 <when>과 하나의 <otherwise> 서브 태그를 가짐
 
⑦ when
     - choose 태그의 서브태그
     - choose 태그내에서 여러번 사용될 수 있다.
     - 기본형
          <c:when test="조건 판별식" />
 
⑧ otherwise
     - choose 태그의 서브태그
     - choose 태그내에서 한번만 사용될 수 있다.
     - 예제 :
          <c:choose>
               <c:when test="${country == 'Korea'}">
               나라 : <c:out value="${country}" />
          </c:when>
 
          <c:when test="${country == 'Canada'}">
               나라 : <c:out value="${country}" />
          </c:when>
   
          <c:otherwise>
               선택된 나라가 없습니다.
          </c:otherwise>
     </c:choose>
 
⑨ forEach
     - 객체 전체에 걸쳐 반복 실행할 때 사용
     - 기본형
          <c:forEach   items="반복할 객체명"
                              begin="시작값"
                              end="종료값"
                              step="증가값"
                              var="변수명"
                              varStatus="별도의 변수" />

⑩ forTokens
     - 문자열을 주어진 구분자(delimiter)로 분할
     - 기본형
          <c:forTokens items="반복할 객체명"
                              delims="구분자"
                              begin="반복할 시작값"
                              end="반목 마지막값"
                              step="증가값"
                              var="변수명"
                              varStatus="별도의 변수"
     - 예제
          <c:forTokens var="color" items="빨강색,주황색.노란색.초록색,파랑색,남색.보라색" delims=",.">
               color : <c:out value="${color}" /><br>
          </c:forTokens>
 
⑪ import
 - 웹 어플리케이션 내부의 자원 및 http, ftp와 같은 외부에 있는 자원에 대해 접근
 - 기본형
  <c:import url="읽어올 URL"
     var="읽어올 데이터를 저장할 변수명"
     scope="변수의 공유 범위"
     varReader="리소스의 내용을 Reader 객체로 읽어올 때 사용"
     charEncoding="읽어온 데이터의 캐릭터셋 지정" />
 
⑫ redirect
     - response.sendRedirect()를 대체하는 태그로 지정한 다른 페이지로 이동
     - 기본형
          <c:redirect url="이동할 URL" />
 
⑬ url
     - 쿼리 파라미터로 부터 URL 생성
     - 기본형
          <c:url var="생성한 URL이 저장될 변수명"
                    value="생성할 URL"
                    scope="변수의 공유 범위" />
 
⑭ param
     - 기본형
          <c:param name="파라미터 명"
                         value="파라미터 값" />
               <c:url var="registrationURL" value="/customers/register">
               <c:param name="name" value="${param.name}" />
               <c:param name="country" value="${param.country}" />
          </c:url>


<c:set var="temp" value="Hello!&nbsp;World" />
<c:out value="${ temp }" default="value is null"/><br>
<c:out value="${ temp }" default="value is null" escapeXml="false" /><br>
<c:out value="${ temp2 }" default="value is null" /><br>

<c:remove var="timezone" scope="session"/>
<c:set var="timezone" scope="session">CST</c:set>

<c:out value="${cookie['tzPref'].value}" default=="CST"/>


function#

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>


${fn:substring(name, 1, 10)}


fn:contains(string, substring)  
string이 substring을 포함하면 true 리턴. 

fn:containsIgnoreCase(string,substring)
대소문자에 관계없이, string이 substring을 포함하면 true 리턴. 

fn:endsWith(string, suffix)   
string이 suffix로 끝나면 true 리턴. 

fn:escapeXml(string)    
string에 XML과 HTML에서 특별한 의미를 가진 문자들이 있으면, XML 엔티티 코드로 바꿔준 뒤 문자열 리턴. 

fn:indexOf(string,substring)  
string에서 substring이 처음으로 나타나는 인덱스 리턴. 

fn:join(array, separator)
   
array(배열) 요소들을 separator를 구분자로 하여 연결해서 리턴 

fn:length(item)
      
item 이 배열이나 컬렉션이면 요소의 갯수를, 문자열이면 문자의 갯수를 리턴. 

fn:replace(string, before, after)
 
string 내에 있는 before 문자열을 after 문자열로 모두 바꿔서 리턴. 

fn:split(string, separator)
   
string 내의 문자열을 separator에 따라 나누어서 배열로 구성해 리턴. 

fn:startsWith(string, prefix)
  
string이 prefix로 시작하면 true 리턴. 

fn:substring(string, begin, end)
 
tring에서 begin 인덱스에서 시작해서 end 인덱스에 끝나는 부분
(end 인덱스에 있는문자 포함)의 문자열을 리턴.

fn:substringAfter(string, substring)

string에서 substring이 나타나는 이후의 부분에 있는 문자열을 리턴. 

fn:substringBefore(string, substring)

string에서 substring이 나타나기 이전의 부분에 있는 문자열을 리턴. 

fn:toLowerCase(string)
    
string을 모두 소문자로 바꿔 리턴. 

fn:toUpperCase(string)
    
string을 모두 대문자로 바꿔 리턴. 

fn:trim(string)
      
string 앞뒤의 공백(whitespace)을 모두 제거하여 리턴.


fmt#

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

  • 국제화

    • <fmt:message> 
    • <fmt:setLocale> 
    • <fmt:setTimeZone>
    • <fmt:bundle> 
    • <fmt:setBundle> 
    • <fmt:param> 
    • <fmt:requestEncoding> 
  • 포맷팅

    • <fmt:timeZone> 
    • <fmt:setTimeZone> 
    • <fmt:formatNumber> 
    • <fmt:formatDate>
    • <fmt:parseNumber> 
    • <fmt:parseData> 
    • <fmt:parseNumber> 



jstl fmt로 날짜보여줄때, pattern attribute에 의한 날짜 표현 방식들

pattern="yyyy-MM-dd aa h:mm:ss"    
2007-12-13 오전 9:36:48

pattern="yyyy-MM-dd aa hh:mm:ss"  
2007-12-13 오전 09:36:48

pattern="yyyy-MM-dd H:mm:ss"      
2007-12-13 9:36:48

pattern="yyyy-MM-dd HH:mm:ss"    
2007-12-13 09:36:48


<fmt:setLocale value="fr_CA" scope="session"/>
<fmt:setTimeZone value="Australia/Brisbane" scope="session"/>

<fmt:formatDate value="${blogEntry.created}" dateStyle="full"/>
<c:out value="${blogEntry.title}" escapeXml="false"/>
<fmt:formatDate value="${blogEntry.created}" pattern="h:mm a zz"/>
<fmt:formatNumber value="0.02" type="currency" currencySymbol="원"/>

<fmt:formatNumber value="9876543.61" type="number"/>

[type="{number|currency|percent}"]


<fmt:parseDate value="${usDateString}" parseLocale="en_US" type="both" dateStyle="short" timeStyle="short" var="usDate"/>


sql#

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

  • 데이터베이스 접근

    • <sql:query> 
    • <sql:update> 
    • <sql:setDataSource> 
    • <sql:param> 
    • <sql:dataParam> 



xml#

<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>

  • 코어 xml 액션 

    • <x:parse> 
    • <x:out> 
    • <x:set> 
  • xml 흐름 제어

    • <x:if> 
    • <x:choose> 
    • <x:when> 
    • <x:otherwise> 
    • <x:forEach> 
  • 변환 액션

    • <x:transform> 
    • <x:param> 


출처 : http://ebizdocs.springnote.com/pages/1327406?print=1

반응형

'프로그래밍 > Java' 카테고리의 다른 글

inputStream <-> String  (0) 2009.03.03
jstl 예제 - fn, fmt, foreach  (2) 2009.02.18
[이클립스] JVM 메모리 용량 세팅  (0) 2009.02.11
[JSTL] 사용법  (0) 2009.02.11
StringTokenizer 와 String.split()  (0) 2009.02.11
반응형

▣ JSTL(JSP Standard TAG Library)의 사용
   - 많이 사용되는 사용자 정의 태그를 모아서 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. 설치(JSTL을 사용하기 위한 환경)
   - http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html
     . Standard Taglib nightly snapshot에서 다운합니다.

   - 압축을 해제한 후 "F:\JAVA\jstl\jakarta-taglibs-standard-20050804\jakarta-taglibs\standard\lib"폴더안
     에 있는'jstl.jar', 'standard.jar'파일을 "D:\tomcat-5.0.19\common\lib" 폴더로 복사합니다.

 

 

 

▩ 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:8080/jstl/setTag.jsp
<%@ page 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>
<c:set var="today" value="<%= new java.util.Date() %>" />
<html>
<head>
    <title>set 태그와 remove 태그</title>
</head>
<body>
변수 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}
</body>
</html>

 

 


2. Map 객체의 사용, http://127.0.0.1:8080/jstl/setTag2.jsp
<%@ page 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>
    <title>set 태그와 remove 태그</title>
</head>
<body>
<c:set target="${map}" property="name" value="왕눈이" />

변수 map에 저장된 name 값: ${map.name}

</body>
</html>

 

 

 

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

1. if 흐름제어 태그의 사용
   - http://127.0.0.1:8080/jstl/ifTag.jsp
   - http://127.0.0.1:8080/jstl/ifTag.jsp?name=tree
   - http://127.0.0.1:8080/jstl/ifTag.jsp?name=tree&age=25
   - 한글은 비교가 안됩니다.

<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><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:8080/jstl/chooseTag.jsp

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

<ul>
<c:choose>
  <c:when test="${param.name == 'bk'}" >
    <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:8080/jstl/forEachTag.jsp

<%@ page 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><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:8080/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>


반응형

'프로그래밍 > Java' 카테고리의 다른 글

JSTL  (0) 2009.02.18
[이클립스] JVM 메모리 용량 세팅  (0) 2009.02.11
StringTokenizer 와 String.split()  (0) 2009.02.11
JSTL fmt  (0) 2009.02.11
배열 정렬.  (0) 2009.02.11
반응형
JSTL

날짜 포멧..
<fmt:parseDate value='2007-11-11' var='contStartDate' pattern='yyyy-MM-dd'/>
<fmt:formatDate value='${contStartDate}' pattern='yyyyMMdd'/>



숫자 포멧.
<fmt:formatNumber type="number" maxFractionDigits="0" minFractionDigits="0" value="${item.price}" />

반응형

'프로그래밍 > Java' 카테고리의 다른 글

[JSTL] 사용법  (0) 2009.02.11
StringTokenizer 와 String.split()  (0) 2009.02.11
배열 정렬.  (0) 2009.02.11
UTF-8 개발에 관한 정리  (0) 2009.02.11
Request 내부 객체  (0) 2009.02.11

+ Recent posts